1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo bài tập lớn xử lý ảnh đề tài hình thái học morphological filtering

24 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hình Thái Học (Morphological Filtering)
Tác giả Lê Thanh Nhã, Hồ Viết Huy
Người hướng dẫn GVHD: Võ Tuấn Kiệt
Trường học Trường Đại Học Bách Khoa Tp.Hcm
Chuyên ngành Viễn Thông
Thể loại báo cáo
Năm xuất bản 2022
Thành phố Tp Hồ Chí Minh
Định dạng
Số trang 24
Dung lượng 5,46 MB

Nội dung

Trong báo cáo này chỉ mô tả một vài phuơng pháp tiền xử lý hình ảnh, chú trọng đến ảnh nhị phân, bởi ảnh của các bản vẽ kỹ thuật thuờng chỉ là ảnh 2 màu: đen, trắng để cải thiện chất luợ

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM

-

Đề tài: Hình thái học (Morphological Filtering) GVHD: Võ Tu n Kiệt

Trang 2

GIỚ I THIỆU ĐỀ TÀI

Hình ảnh là một dạng dữ liệu đóng vai trò quan trọng trong việc trao đổi, xử lý, lưu giữ thông tin Trong nhiều ngành nghề, trong một số các loại hình công việc, nguời ta đều cần đến hình ảnh để mô tả, minh chứng hay diễn đạt những điều mà đôi khi chữ viết hay ngôn ngữ nói không lột tả hết đuợc Đặc biệt trong hầu hết các một số ngành công nghiệp như: cơ khí chế tạo, chế biến và sản xuất việc đọc hình ảnh có thể nói là thuờng xuyên và cực kỳ quan trọng Bản vẽ kỹ thuật (một dạng của hình ảnh) chính là kết quả ngôn ngữ kỹ thuật Mà qua nó, một qui trình công nghệ phải đuợc xây dựng trong quá trình sản xuất, cũng nhu nó chính là cơ sở cho việc nghiệm thu cho bất kỳ sản phẩm nào Để lưu ảnh của các tài liệu, các bản vẽ hoặc sửa đổi chúng và chuyển chúng sang các dạng đồ hoạ khác tiện cho việc nhận dạng, đối sánh mẫu để sử dụng sau này là điều cần thiết Nhưng phải tổ chức việc lưu các dạng hình ảnh này nhu thế nào? Có cần xử lý gì truớc khi lưu chúng không? Câu trả lời là có Do vậy tiền xử lý ảnh là việc cần làm Có nhiều phuơng pháp, nhiều công cụ, nhiều phần mềm xử lý ảnh đã ra đời Tăng cuờng chất luợng ảnh, mà công đoạn đầu tiên là một buớc tiền xử lý nhằm loại bỏ nhiễu, khắc phục những khiếm khuyết

do buớc thu nhận ảnh không tốt là việc làm quan trọng Có nhiều phuơng pháp cho việc nâng cao chất luợng ảnh nói chung và tiền xử lý nói riêng Trong báo cáo này chỉ mô tả một vài phuơng pháp tiền xử lý hình ảnh, (chú trọng đến ảnh nhị phân, bởi ảnh của các bản

vẽ kỹ thuật thuờng chỉ là ảnh 2 màu: đen, trắng) để cải thiện chất luợng hình ảnh bằng các thao tác Hình thái học (Morphology)

Trang 3

Mục l ục:

1 Sơ lược về x lý nh và phép toán hình thái ử ả 4

1.1 Xử lý ảnh 4

1.2 Các quá trình x ử lý ảnh 4

1.3 Khái niệm về phép toán hình thái Morphology 5

2 Thao tác hình thái h c với ảnh 6

2.1 Các phép toán t p hậ ợp 6

2.2 Phép giãn (Dilation) 8

2.3 Phép co (Erosion) 9

2.4 Phép mở (Opening) 13

2.5 Phép đóng (Closing) 15

2.6 Phương pháp lấy đường bao (Boundary Extraction) 17

2.7 Chóp nón và đáy nón (Top hat and black hat) 19

2.8 Xương hóa (Skeletonize) 20

2.9 Khung lồi (Convex hull) 21

3 K ết luận 24

Trang 4

1 Sơ lược về xử lý ảnh và phép toán hình thái:

1.1 Xử lý ảnh

Cũng như xử lý dữ liệu bằng đồ hoạ, xử lý ảnh số là một lĩnh vực của tin học ứng dụng Xử lý dữ liệu bằng đồ họa đề cập đến những ảnh nhân tạo, các ảnh này được xem xét như là một cấu trúc dữ liệu và được tạo ra bởi các chương trình Xử lý ảnh số bao gồm các phương pháp và kỹ thuật để biến đổi, để truyền tải hoặc mã hóa các ảnh tự nhiên Mục đích của xử lý ảnh gồm:

Thứ nhất: biến đổi và làm đẹp ảnh

Thứ hai: tự động phân tích nhận dạng ảnh hay đoán nhận ảnh và đánh giá các nội dung của ảnh

Nhận dạng ảnh là quá trình liên quan đến các mô tả đối tượng mà người ta muốn đặc

tả nó Quá trình nhận dạng thường đi sau quá trình trích chọn các đặc tính chủ yếu của đối tượng Có hai kiểu mô tả đối tượng:

- Mô tả tham số (nhận dạng theo tham số)

- Mô tả theo cấu trúc (nhận dạng theo cấu trúc)

Nhận biết và đánh giá các nội dung của ảnh là sự phân tích một hình ảnh thành những phần có nghĩa để phân biệt đối tượng này với đối tượng khác Dựa vào đó ta có thể mô tả cấu trúc của hình ảnh ban đầu

Có thể liệt kê một số phương pháp nhận dạng cơ bản như nhận dạng biên của một đối tượng trên ảnh, tách cạnh, phân đoạn hình ảnh Kỹ thuật này được sử dụng nhiều trong

y học (xử lý tế bào, nhiễm sắc thể)

Trong thực tế, người ta đã áp dụng kỹ thuật nhận dạng khá thành công với nhiều đối tượng khác nhau như: Nhận dạng ảnh vân tay, nhận dạng chữ (chữ cái, chữ số, chữ có dấu) Nhận dạng chữ in hoặc đánh máy trong văn bản phục vụ cho việc tự động hoá quá trình đọc tài liệu, tăng nhanh tốc độ và chất lượng thu nhận thông tin từ máy tính, nhận dạng chữ viết tay (với mức độ ràng buộc khác nhau về cách viết, kiểu chữ,

1.2 Các quá trình x ử lý ảnh

Trang 5

- Thu nhận ảnh: có thể nhận được qua camera màu hoặc đen trắng, đây là loại ảnh tương tự

- Tiền xử lý: sau bộ phận thu nhận ảnh, ảnh có thể bị nhiễu hoặc độ tương phản thấp nên cần đưa vào bộ tiền xử lý để nâng cao chất lượng ảnh Chức năng: lọc nhiễu, tăng hoặc giảm độ tương phản

- Phân đoạn ảnh : là tách ảnh đầu vào thành các vùng để biểu diễn, phân tích và nhận dạng ảnh

- Biểu diễn ảnh : các vật thể sau khi được phân đoạn có thể được mô tả dưới dạng chuỗi các điểm và biểu diễn ảnh thường được sử dụng khi ta quan tâm đến đặc tính bên trong của vùng ảnh Vd : đường cong , hình dạng … quá trình biểu diễn ảnh là việc biến đổi các số liệu của ảnh thành dạng thích hợp và cần thiết cho quá trình xử lý bằng máy tính

- Nhận dạng và nội suy : là quá trình phân loại vật thể dựa trên cơ sở các chi tiết mô

tả vật thể và nhận dạng ảnh là quá trình xác định ảnh và quá trình này thu được băng cách

so sánh với mẫu đã được lưu trữ từ trước

- Cơ sở tri thức : các quá trình xử lý liệt kê trong hình thức xử lý ảnh, được thực hiện dưới sự giám sát và thực hiện dựa trên cơ sở các kiến thức về lĩnh vực xử lý ảnh 1.3 Khái niệm về phép toán hình thái Morphology

Hiểu một cách đầy đủ thì ” Morphology ” là hình thái và cấu trúc của đối tượng, hay nó diễn tả những phạm vi và các mối quan hệ giữa các phần của một đối tượng Hình thái học quá quen thuộc trong các lĩnh vực ngôn ngữ học và sinh học Trong ngôn ngữ học, hình thái học là sự nghiên cứu về cấu trúc của từ, tập hợp từ, câu và đó cũng

Trang 6

là một lĩnh vực nghiên cứu từ nhiều năm nay Còn trong sinh học, Hình thái học lại chú trọng tới hình dạng của một cá thể hơn; nghiên cứu hình dạng của một nhóm vi khuẩn, dựa trên các đặc điểm nhận dạng để phân biệt chúng thuộc nhóm vi khuẩn nào, v.v Tuỳ theo truờng hợp cụ thể mà có một cách phân lớp phù hợp với nó: Có thể phân lớp dựa trên những hình dạng bao quanh nhu (elip, tròn, ), kiểu và mức độ của những hình dạng bất quy tắc (lồi, lõm, ), những cấu trúc trong (lỗ, đuờng thẳng, đuờng cong, )

mà đã đuợc tích luỹ qua nhiều năm quan sát

Tính khoa học của Hình thái học số chỉ mới thực sự phát huy khả năng của nó

kể từ khi máy tính điện tử số ra đời và đã làm cho Hình thái học trở nên thông dụng,

có nhiều tính năng mới Những đối tuợng ảnh trong Hình thái học hầu như là tập hợp của các điểm ảnh, nhóm lại theo cấu trúc 2 chiều Những thao tác toán học cụ thể trên tập hợp điểm đó đuợc sử dụng để làm rõ (tái hiện ) những nét đặc trung của những hình dạng, do vậy mà có thể tính toán đuợc hay nhận biết đuợc chúng một cách dễ dàng

2 Thao tác hình thái h c với ảnh

2.1 Các phép toán t p hậ ợp

Phép NOT (bù) A {( , ) |x y I A( , ) 1}x y

Phép giao (AND) A B

Trang 7

Phép h p (OR) ợ A B

Phép XOR

Hit and Fit

Fit: tất cả pixel trong y u t c u trúc s ph hế ố ấ ẽ ủ ết pixel trên ảnh

Hit: Bất kì 1 pixel trong y u t c u trúc ph lên 1 pixel trên nh ế ố ấ ủ ả

Miss: Trường h p còn lại ợ

Ví dụ: A :Fit

B: Hit

C: Miss

Trang 8

2.2 Phép giãn nở (Dilation)

Phép giãn là quá trình chập của những bức ảnh ( hay vùng ảnh), chúng ta gọi chúng

là A, với một số nhân, chúng ta gọi chúng là B Nhân có thể có nhiều hình dạng và kích thước khác nhau, nhưng chỉ có một điểm gọi là điểm neo duy nhất Thông thường, nhân là một khối hình vuông hay hình đĩa nhỏ với điểm neo nằm ở tâm Nhân có thể được nhận định như là mẫu hay mặt nạ và nó có ý nghĩa trong thuật toán giãn nở là để định vị phần tử

có giá trị lớn nhất Khi nhân B được quét trên toàn ảnh, chúng ta tính toán được giá trị pixel lớn nhất của vùng ảnh được khớp bởi nhân B và thay thế pixel xác định bởi điểm neo bằng giá trí lớn nhất đã tính toán Điều này khiến cho miền sáng của bức ảnh được mở rộng như

đồ hình sau Chính việc mở rộng này là gốc của thuật ngữ “quá trình giãn nở”

Tuy nhiên với vai trò bình đẳng của A và B, ta coi A là cấu trúc và B là ảnh thìkhi đó:

Ta có ví dụ sau đây:

Trang 9

Mục đích phương pháp này giúp:

Với những hình ảnh bị đứt nét có thể nối kiền lại

Với những pixel nhiễu xung quanh đối tượng sẽ trở thành viền của đối tượng

Giúp nổi bật đối tượng trong ảnh hơn

Thực hiện với thư viện openCV:

import cv2

import numpy np as

img = cv2.imread( "text1.png" )

kernel = np.ones(( 3 3 , ) , np.uint8)

imgDialation = cv2.dilate(img , kernel , iterations = 1 )

imgDialation3 = cv2.dilate(img , kernel , iterations = 3 )

cv2.imshow( "Dialation image" , imgDialation)

cv2.imshow( "Dialation3 image" , imgDialation3)

cv2.waitKey( 0 )

cv2.destroyAllWindows()

Ảnh ngõ vào img được đọc qua lệnh cv2.imread

Ma trận kernel là phần tử cấu trúc 3x3 với các phần tử đều bằng 1

Hàm cv2.dilate dùng để giãn ảnh với ma trận kernel và số lần lặp lại ‘iterations’ Kết quả mô phỏng trên Pycharm: Ví dụ 1 cho đoạn văn bản

Trang 10

Trường hợp lặp lại 3 lần phép giãn:

Ví dụ 2 cho vật thể, dùng để giãn nở vùng sáng

Trang 11

Phép ăn mòn được mô tả bằng biểu thức toán học như sau:

Ta có ví dụ sau đây:

Trang 12

Mục đích phương pháp này giúp:

Loại bỏ những pixel nhiễu cô lập

Loại bỏ những pixel nhiễu xung quanh đối tượng giúp cho phần viền (cạnh) của đối tượng trở nên mịn hơn

Loại bỏ lớp viền (cạnh) của đối tượng giúp đối tượng trở nên nhỏ hơn và đặt những pixel viền đó trở thành lớp nền của đối tượng

Thực hiện với thư viện openCV:

import cv2

import numpy np as

img = cv2.imread("Phep co.png")

kernel = np.ones((3 3,),np.uint8)

imgEroded = cv2.erode(img, kernel, iterations=1)

imgEroded3 = cv2.erode(img, kernel, iterations=3)

cv2.imshow("image", img)

cv2.imshow("Eroded image", imgEroded)

cv2.imshow("Eroded3 image", imgEroded3)

cv2.waitKey(0)

cv2.destroyAllWindows()

Tương tự phép dãn và dùng hàm cv2.erode dùng để co ảnh với phần tử cấu trúc

‘kernel’ với số lần lặp lại ‘iterations’

Kết quả mô phỏng trên Pycharm:

Ảnh gốc

Trang 13

Sau khi sử dụng phép co 1 lần

Sau khi sử dụng phép co 3 lần 2.3 Phép mở (Opening)

Hiệu quả của sự xử lý ảnh hình thái phục rất nhiều vào việc kết hợp giữa sự giãn nở và

ăn mòn, và do vậy chúng tạo nên những phép toán xử lý hình thái mới trong số đó có phép

mở và phép đóng các ảnh hình thái

Nhờ thứ tự thực hiện các quá trình ăn mòn lên một ảnh hình thái A bởi một đối tượng cấu trúc B trước, rồi tiếp đến thực hiện tiếp quá trình giãn nở cũng bởi chính phần tử cấu trúc B đó, ta thu được sự mở các lỗ hổng trong một ảnh thái; các lỗ hổng này có hình dạng

Trang 14

giống như hình dạng của một cấu trúc B Đó chính là phép mở

Phép mở được mô tả bằng biểu thức toán học sau :

Như vậy Phép mở (Opening) là thực hiện phép co rồi bắt đầu thực hiện phép giãn với một cấu trúc Giúp làm mượt các đường viền, phá vỡ các khe nhỏ, loại bỏ các đối tượng nhỏ, làm mượt các đỉnh lồi

Ta có ví dụ sau:

Thực hiện với thư viện openCV:

import cv2

import numpy np as

img = cv2.imread("test phep mo.png")

kernel = np.ones((7 7,),np.uint8)

opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

cv2.imshow("image", img)

cv2.imshow("opening image", opening)

cv2.waitKey(0)

destroyAllWindows()

Trang 15

Câu lệnh cv2.morphologyEx để thực hiện phép mở hoặc đóng với phần tử cấu trúc kernel 7x7

Kết quả mô phỏng:

2.4 Phép đóng (Closing)

Ngược lại với sự mở rộng và loại bỏ các lỗ hổng nhỏ là quá trình làm kín Ảnh A được làm kín bởi B được thực hiện bởi quá trình làm giãn nở trước , tiếp theo là một quá trình

ăn mòn

Phép đóng được mô tả bằng biểu thức toán học sau :

Như vậy phép đóng (Closing) giúp làm mượt các đường viền, loại bỏ các lỗ nhỏ, làm mượt các đỉnh khe hẹp

Ta có ví dụ sau đây

Trang 16

Thực hiện với thư viện openCV:

import cv2

import numpy np as

img = cv2.imread("test phep dong.png")

kernel = np.ones((9 9,),np.uint8)

closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

cv2.imshow("image", img)

cv2.imshow("closing image", closing)

Trang 17

2.5 Phương pháp lấy đường bao (Boundary Extraction)

Phép lấy đường bao áp d ng cho ụ ảnh xám đượ thực hiệc n m t cách nhanh chóng ộVới ảnh xám, chúng ta th y r ng giá tr c a phép toán s cho ta biêt nhiấ ằ ị ủ ẽ ều điều v s bi n ề ự ếđổi nhanh chóng của ảnh sáng Phép toán này thường dùng để tách đường bao của vùng sáng để chúng ta có thể đối xử với chúng như là một đ i tưố ợng hoàn ch nh ( hay nh ng ỉ ữphần hoàn chỉnh c a nhủ ững đối tượng) Đường bao kín của vùng ảnh được tìm th y nh ầ ờvào s ph n bù gi a phiên b n m r ng c a vùng nh và ph n thu h p cự ầ ữ ả ở ộ ủ ả ầ ẹ ủa vùng để ại lmột đường bao hoàn chỉnh Đây chính là một cách để phát hiện mép, viền của các đối tượng trong ảnh

Trang 18

Phép lấy đường bao được được mô t b ng bi u th c toán hả ằ ể ứ ọc sau:

Ta có ví dụ sau đây:

Thực hiện với thư viện openCV

import cv2

import numpy np as

img = cv2.imread("test duong bao.png")

kernel = np.ones((3 3,),np.uint8)

eroded = cv2.morphologyEx(img, cv2.MORPH_ERODE, kernel)

bound = cv2.subtract(img, eroded)

cv2.imshow("image", img)

cv2.imshow("bound image", bound)

cv2.waitKey(0)

cv2.destroyAllWindows()

Kết quả mô ph ng: ỏ

Trang 19

2.6 Chóp nón và đáy nón (Top hat and Black hat)

Hai phép toán chóp nón (Top Hat) và đáy nón( Black Hat) dùng để tách riêng từng phần, mi n sáng hay tề ối hơn so với các lân c n trậ ực tiếp c a chúng Ta s s dủ ẽ ử ụng chúng

để tách những phần của m t vật thể mà chúng cho thấy độ sáng thay đổi ch có quan hệ ộ ỉ

với vật mà chúng dính vào

Thực hiện với thư viện openCV:

import cv2

import numpy np as

img = cv2.imread("test top hat.png")

kernel = np.ones((5 5,),np.uint8)

tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel,

iterations=3)

blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel,

iterations=3)

cv2.imshow("image", img)

cv2.imshow("top hat image", tophat)

cv2.imshow("black hat image", blackhat)

cv2.waitKey(0)

cv2.destroyAllWindows()

Kết qu : ả

Nhận xét:

Top hat là sự khác bi t giệ ữa hình ảnh đầu vào và "m " hình ở ảnh đầu vào

Black hat là s khác biự ệt giữa việc "đóng" hình ảnh đầu vào và hình ảnh đầu vào

Trang 20

2.7 Xương hóa (Skeletonize)

Giống như sự mở rộng và kép kín, việc tạo khung xương và xác định các đường bao của các đối tượng trong nh là nh ng chả ữ ức năng dựa trên s giãn nự ở và ăn mòn.Tạo khung xương là hiệu ứng giảm tất cả các đối tượng chỉ còn các đường mà không làm thay đổi cấu trúc chủ yếu của một ảnh

Nguyên t c là lắ ấy ảnh gốc ăn mòn rồi lại giãn n v i nhân chở ớ ữ thập, lấy ảnh gốc trừ đi kết quả giãn nở được một khoảng dư ra, rồ ộng t t c phi c ấ ả ần dư ra ta được kết qu ảCode:

import cv2

import numpy np as

img = cv2.imread('test skel.png',0)

size = np.size(img)

skel = np.zeros(img.shape, np.uint8)

ret, img = cv2.threshold(img, 127 255, , )

element = cv2.getStructuringElement(cv2.MORPH_CROSS, (33))

done = False

while not ( done):

eroded = cv2.erode(img, element)

temp = cv2.dilate(eroded, element)

temp = cv2.subtract(img, temp)

skel = cv2.bitwise_or(skel, temp)

Trang 21

2.8 Khung lồi (Convex hull )

Bất kỳ vùng / hình dạng nào được cho là l i nồ ếu đường nối hai điểm bất kỳ (được chọn t vùng bên trongừ ) được chứa hoàn toàn trong vùng đó Một cách khác để nói điều này là, để một hình có dạng lồi, tất cả các góc bên trong của nó phải nhỏ hơn 180 độ hoặc tất cả các đỉnh ph i m v phía trung tâm ả ở ề

Ví dụ:

Ngày đăng: 23/04/2024, 16:30

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w