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

Báo cáo cuối kì chủ Đề kỹ thuật canny trong xử lý Ảnh

19 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Kỹ Thuật Canny Trong Xử Lý Ảnh
Tác giả Võ Dũng Phát
Trường học Trường Đại Học Sài Gòn
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Năm xuất bản 2024
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 19
Dung lượng 2,55 MB

Nội dung

Canny là một thuật toán phát hiện biên edge detection nổi tiếng và được sử dụng rộng rãi trong lĩnh vực xử lý ảnh.. Thuật toán Canny, một trong những phương pháp phát hiện biên hiệu quả

Trang 1

ỦY BAN NHÂN DÂN TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC SÀI GÒN

BÁO CÁO CUỐI KÌ

MÔN: PHÂN TÍCH THIẾT KẾ XỬ LÝ ẢNH

Chủ đề: Kỹ thuật Canny trong xử lý ảnh.

Họ và tên: Võ Dũng Phát

Mã số sinh viên: 3120410389

Khoa: Công Nghệ Thông Tin

Thành phố Hồ Chí Minh – Tháng 5/2024

Trang 2

MỤC LỤC

LỜI MỞ ĐẦU …… ………1

PHẦN I: GIỚI THIỆU……… 2

1 Mục tiêu đề tài……… 2

2 Tầm quan trọng của đề tài……….2

3 Lý do chọn đề tài……… 2

PHẦN II: CƠ SỞ LÝ THUYẾT……… 3

1 Biên ảnh……….3

2 Phương pháp phát hiện biên bằng kỹ thuật Canny……….3

PHẦN III: THỰC HIỆN CÀI ĐẶT THUẬT TOÁN CANNY… …………5

1 Làm trơn ảnh……… 9

2 Tính Gradient của ảnh bằng cách sử dụng mặt nạ Sobel……… 10

3 Tính độ lớn và hướng của Gradient tại mỗi điểm……….11

4 Tìm cực trị địa phương theo Gradient hướng……… .12

5 Tách ngưỡng kép……… 12

Trang 4

Lời mở đầu

Trong thời đại công nghệ số hiện nay, xử lý ảnh số đang ngày càng trở thành một lĩnh vực quan trọng và có nhiều ứng dụng trong đời sống Từ những ứng dụng đơn giản như chỉnh sửa ảnh, nhận diện khuôn mặt, đến các ứng dụng phức tạp hơn như xe tự lái, y tế và giám sát

an ninh, công nghệ xử lý ảnh đã chứng minh được khả năng và tầm quan trọng của mình

Xử lý ảnh là một nhánh của trí tuệ nhân tạo và khoa học máy tính, bao gồm các phương pháp và kỹ thuật để biến đổi và phân tích ảnh nhằm thu thập thông tin có giá trị hoặc tạo ra những hình ảnh có chất lượng cao hơn Nó bao gồm nhiều công đoạn từ việc tiền xử lý ảnh, trích xuất đặc trưng, đến phân loại và nhận diện đối tượng trong ảnh

Trang 5

Phần I: Giới thiệu

1 Mục tiêu của đề tài.

Canny là một thuật toán phát hiện biên (edge detection) nổi tiếng và được sử dụng rộng rãi trong lĩnh vực xử lý ảnh Thuật toán này được phát triển bởi John F Canny vào năm

1986 và kể từ đó, nó đã trở thành một trong những phương pháp cơ bản và hiệu quả nhất để phát hiện các biên trong ảnh số Mục tiêu của đề tài này là phân tích chi tiết thuật toán Canny

và ứng dụng của nó trong xử lý ảnh

2 Tầm quan trọng của đề tài.

Thuật toán Canny, một trong những phương pháp phát hiện biên hiệu quả và phổ biến nhất trong xử lý ảnh, đóng vai trò quan trọng trong nhiều ứng dụng khác nhau Việc nghiên cứu và phát triển các ứng dụng của thuật toán Canny mang lại nhiều giá trị quan trọng Thuật toán Canny đóng vai trò không thể thiếu trong nhiều lĩnh vực ứng dụng và nghiên cứu xử lý ảnh Tầm quan trọng của đề tài này không chỉ nằm ở việc cải thiện các hệ thống hiện có mà còn mở ra những cơ hội mới cho các nghiên cứu và ứng dụng trong tương lai Bằng cách hiểu

rõ và áp dụng hiệu quả thuật toán Canny, chúng ta có thể đạt được những bước tiến quan trọng trong khoa học và công nghệ, góp phần nâng cao chất lượng cuộc sống và thúc đẩy sự phát triển của xã hội

3 Lý do chọn đề tài.

Việc chọn nghiên cứu về thuật toán Canny trong xử lý ảnh dựa trên nhiều lý do quan trọng, bao gồm cả các khía cạnh học thuật, ứng dụng thực tiễn và tiềm năng phát triển Dưới đây là những lý do chính cho việc chọn đề tài này:

- Độ Phổ Biến và Ứng Dụng Rộng Rãi

- Tính Hiệu Quả và Chính Xác Cao

- Nhu Cầu Thực Tiễn Cao

- Nền Tảng Cho Nghiên Cứu Tiếp Theo

- Thách Thức Kỹ Thuật và Cơ Hội Sáng Tạo

- Phát Triển Kỹ Năng Chuyên Môn

- Góp Phần Vào Sự Phát Triển Cộng Đồng Khoa Học

- Khả Năng Ứng Dụng Cao Trong Đời Sống Hằng Ngày

Trang 6

PHẦN II: CƠ SỞ LÝ THUYẾT

1 Biên ảnh:

- Điểm biên: một điểm ảnh được coi là điểm biên nếu có sự thay đổi đột ngột về mức xám Ví dụ: đối với ảnh đen trắng, một điểm được gọi là điểm biên nếu nó là điểm đen có ít nhất một điểm trắng bên cạnh

- Đường biên của đối tượng: được tạo thành bởi một tập các điểm biên liên tiếp

2 Phương pháp phát hiện biên bằng kỹ thuật Canny:

Giới thiệu:

Mục đích của việc phát hiện biên nói chung là giảm thiểu đáng kể số lượng dữ liệu trong một hình ảnh, trong khi các đặc tính cấu trúc vẫn được giữ để sử dụng cho việc xử lý hình ảnh hơn nữa Phương pháp Canny – được phát triển bởi John F Canny (JFC) vào năm 1986, là một trong những công cụ xử lý hình ảnh thông dụng nhất Phương pháp này khá tốt, có khả năng cho ra đường biên mảnh và phát hiện chính xác điểm biên với điểm nhiễu

Mục tiêu (ràng buộc) của JFC để phát triển thuật toán đó là tối ưu những vấn đề liên quan đến các tiêu chuẩn sau:

- Phát hiện: Xác suất phát hiện những điểm biên thực sự phải là cực đại hóa, trong khi xác suất lỗi phát hiện những điểm không phải biên cần được giảm thiểu Điều này tương ứng với tối đa hóa tỷ lệ báo hiệu nhiễu

- Cục bộ hóa: Các biên phát hiện nên càng gần biên thực càng tốt Có nghĩa là độ chênh lệch cấp xám giữa các điểm trên cùng một biên càng nhỏ càng tốt

- Số lượng trả lời – hiệu suất: biên không được nhận ra nhiều, trong khi chỉ

có một biên tồn tại giảm số lượng biên được phát hiện không được nhận ra

Chi tiết các bước thực hiện:

1 Làm trơn ảnh:

Nhân chập ảnh với mặt nạ Gauss:

Trang 7

G = 1591 ∗[2 4 5 4 2

4 9 12 9 4

5 12 15 12 5

4 9 12 9 4

2 9 5 4 2]

Gọi I’ là kết quả sau khi lọc nhiễu: I’ = I ⊗ G

Trang 8

2 Tính Gradient của ảnh bằng cách sử dụng mặt nạ Prewitt hoặc mặt nạ Sobel:

Mặt nạ Prewitt:

Px = [−1 0 1

−1 0 1

1 1 1 ] Mặt nạ Sobel:

Sx = [−1 0 1

−2 0 2

1 2 1 ] Thực hiện nhân chập ảnh I’ ở trên với một trong 2 phương pháp (ở đây sử dụng mặt nạ Sobel):

3 Tính độ lớn và hướng của Gradient tại mỗi điểm:

Tính độ lớn tại mọi điểm: M = √G x

2

+G y2

Tính Gradient hướng tại mọi điểm: θ = tan−1

(G y

G x)

4 Tìm cực trị địa phương theo Gradient hướng:

Tại đây tiến hành loại bỏ các biên dư thừa bằng cách: tại mỗi điểm

ta xét 2 điểm bên cạnh theo hướng θ đã tính được ở trên Hướng được nguyên hóa để xác định cho 8 điểm xung quanh:

Trang 9

Ví dụ xét điểm M(x, y) có θ(x, y) = 11,6° Vì -22,5 ≤ 11,6 < 22,5 nên hướng sẽ được nguyên hóa về 0° Tại đó xét độ lớn của 3 điểm M(x-1, y), M(x, y) và M(x+1, y) Nếu M(x, y) không nhỏ hơn 2 điểm còn lại thì giữ lại điểm M(x, y) Ngược lại, loại điểm M(x, y) bằng cách chuyển điểm M(x, y)

về 0

5 Tách ngưỡng kép:

Phương pháp Canny sử dụng ngưỡng kép, gọi ngưỡng thấp là t và ngưỡng cao là T Xét điểm M(x, y), so sánh M(x, y) với hai ngưỡng t và T:

- Nếu M(x, y) ≥ T: Đánh dấu và giữ lại điểm biên này (đặt giá trị bằng max)

- Nếu M(x, y) < T: Loại bỏ điểm biên này (đặt giá trị bằng 0)

- Nếu t ≤ M(x, y) < T: So sánh giá trị M(x,y) với giá trị của các của 8 điểm lân cận Nếu một trong 8 điểm lân cận có giá trị lớn hơn ngưỡng trên T thì đánh dấu và giữ lại điểm biên này Ngược lại thì loại bỏ điểm biên này (đặt giá trị bằng 0)

PHẦN III: THỰC HIỆN CÀI ĐẶT THUẬT TOÁN CANNY Ngôn ngữ lập trình: Python 3.6.5

Thư viên hỗ trợ:

- OpenCV: đọc ảnh và ghi ảnh.

Trang 10

- matplotlib: hiển thị kết quả.

- numpy: tính toán số học và các phép tính ma trận.

- Trình soạn thảo: Sublime Text 3 ver.3143

Chương trình hoạt động dưới CLI (Windows Powershell/Windows CMD/Terminal):

- Syntax: python canny.py [absolute_image_file_path]

- Example: python canny.py sample1.jpg

Mã nguồn hàm xử lý:

import numpy as np

from copy import deepcopy

from scipy.signal import convolve2d

def convolve(image, kernel, m, div):

height = image.shape[0]

width = image.shape[1]

img = np.zeros_like(image)

for y in range(m//2, height-m//2):

for x in range(m//2, width-m//2):

# Kiểm tra biên và tích chập

if y >= m//2 and y < height-m//2 and x >= m//2 and x < width-m//2:

img[y, x] = ((kernel*image[y-m//2:y+m//2+1,

x-m//2:x+m//2+1]).sum())/div

return img

def cannyED(image):

height = image.shape[0]

width = image.shape[1]

Trang 11

gaussian = np.array([[2, 4, 5, 4, 2],

[4, 9, 12, 9, 4],

[5, 12, 15, 12, 5],

[4, 9, 12, 9, 4],

[2, 4, 5, 4, 2]])

sobel_x = np.array([[-1, 0, 1],

[-2, 0, 2],

[-1, 0, 1]])

sobel_y = np.array([[-1, -2, -1],

[0, 0, 0],

[1, 2, 1]])

print("Smoothing Image ")

smImg = convolve(image, gaussian, 5, 159)

print("Calculating Gradient x-direction ")

gx = convolve(smImg, sobel_x, 3, 1)

print("Calculating Gradient y-direction ")

gy = convolve(smImg, sobel_y, 3, 1)

print("Calculating Magnitude and Gradient Direction ") mag = np.zeros_like(gx)

theta = np.zeros_like(gx)

for y in range(0, gx.shape[0]):

for x in range(0, gx.shape[1]):

mag[y, x] = np.sqrt(gx[y, x]**2 + gy[y, x]**2)

theta[y, x] = np.arctan2(gy[y, x], gx[y, x]) * 180 / np.pi res = deepcopy(mag)

Trang 12

print("Calculate Non-maximum Suppression ")

for y in range(1, mag.shape[0]-1):

for x in range(1, mag.shape[1]-1):

if (theta[y, x] >= -22.5 and theta[y, x] < 22.5) or (theta[y, x] >= 157.5 or theta[y, x] < -157.5):

if not (mag[y, x] >= mag[y, x+1] and mag[y, x] >= mag[y, x-1]):

res[y, x] = 0

elif (theta[y, x] >= 22.5 and theta[y, x] < 67.5) or (theta[y, x] >= -157.5 and theta[y, x] < -112.5):

if not (mag[y, x] >= mag[y-1, x+1] and mag[y, x] >= mag[y+1, x-1]):

res[y, x] = 0

elif (theta[y, x] >= 67.5 and theta[y, x] < 112.5) or (theta[y, x]

>= -112.5 and theta[y, x] < -22.5):

if not (mag[y, x] >= mag[y-1, x] and mag[y, x] >= mag[y+1, x]):

res[y, x] = 0

else:

if not (mag[y, x] >= mag[y-1, x-1] and mag[y, x] >= mag[y+1, x+1]):

res[y, x] = 0

print("Double Thresholding ")

MAX = np.max(image) # Sử dụng image thay cho iamge

upperT = 0.2*MAX

lowerT = 0.1*MAX

a = [-1, 0, 1, -1, 1, -1, 0, 1]

b = [-1, -1, -1, 0, 0, 1, 1, 1]

Trang 13

for i in range(8):

if (y+b[i] >= 0 and y+b[i] < height and x+a[i] >= 0 and x+a[i] < width):

if (res[y+b[i], x+a[i]] > upperT):

return True

return False

for y in range(1, mag.shape[0]-1):

for x in range(1, mag.shape[1]-1):

if (res[y, x] >= upperT):

res[y, x] = 255

elif (res[y, x] < lowerT):

res[y, x] = 0

else:

if (check(x, y) == True):

res[y, x] = 255

else:

res[y, x] = 0

print("DONE!")

return res

Trang 14

Ảnh gốc:

Kết quả từng bước thực hiện thuật toán:

1 Làm trơn ảnh:

Trang 16

2 Tính Gradient của ảnh bằng cách sử dụng mặt nạ Sobel:

 Kết quả với mặt nạ Sx

 Kết quả với mặt nạ Sy

Trang 17

3 Tính độ lớn và hướng của Gradient tại mỗi điểm:

 Độ lớn Gradient tại các điểm:

 Gradient hướng (minh họa dưới dạng ảnh):

Trang 18

4 Tìm cực trị địa phương theo Gradient hướng:

5 Tách ngưỡng kép:

Trang 19

PHẦN IV: KẾT LUẬN

Thuật toán Canny tạo ra các biên mịn và rõ ràng trong hình ảnh, đặc biệt hiệu quả trong việc phát hiện biên trong điều kiện nhiễu Nó là một trong những công cụ quan trọng trong xử lý hình ảnh và được sử dụng rộng rãi trong các ứng dụng:

- Phát hiện biên và đường nét trong hình ảnh: Canny được sử dụng để phát hiện biên và các đường nét trong hình ảnh, giúp trong việc phân tích hình ảnh y tế, nhận diện vật thể, nhận diện ký tự trong OCR (Nhận dạng ký tự quang học), và xác định đối tượng trong các ứng dụng thị giác máy

- Xử lý ảnh y tế: Trong lĩnh vực y học, thuật toán Canny được sử dụng

để phát hiện và phân tích các cấu trúc anh và các biến đổi trong hình ảnh y tế như MRI, CT scans và hình ảnh siêu âm

- Phân tích hình ảnh công nghiệp: Trong công nghiệp, Canny được sử dụng để kiểm tra chất lượng sản phẩm, phát hiện các dấu vết và khuyết điểm trong quá trình sản xuất, và kiểm tra bề mặt của các vật liệu

- Xử lý ảnh y sinh: Trong lĩnh vực y sinh, Canny được sử dụng để phát hiện cạnh của tế bào, phân tích hình dạng tế bào và cấu trúc mô trong hình ảnh từ kính hiển vi

- Xử lý hình ảnh trong tự động hóa và robot: Trong các ứng dụng tự động hóa và robot, Canny được sử dụng để phát hiện vật cản, xác định vị trí và hình dạng của đối tượng, và thực hiện các nhiệm vụ dựa trên hình ảnh như tự động lái xe

- Xử lý hình ảnh trong định vị và nhận dạng: Trong các ứng dụng định

vị và nhận dạng, Canny được sử dụng để phát hiện biên và các đặc điểm cần thiết để nhận dạng đối tượng, khuôn mặt, hoặc vật thể

Ngày đăng: 27/11/2024, 17:47

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

TÀI LIỆU LIÊN QUAN