MỤC LỤC..............................................................................................................
MỤC LỤC
LỜI MỞ ĐẦU........................................................................................................
- MỤC LỤC..............................................................................................................
- LỜI MỞ ĐẦU........................................................................................................
- CHƯƠNG 1: TỔNG QUAN VỀ PHÉP NHÂN CHẬP.........................................
- 1 Phép nhân chập là gì?................................................................................
- 1 Định nghĩa về pháp nhân chập..................................................................
- 1 Tính chất phép nhân chập..........................................................................
- 1 Ưu điểm và nhược điểm trong phép nhân chập.........................................
- CHƯƠNG 2: KỸ THUẬT LỌC SỐ TRONG XỬ LÝ ẢNH................................
- 2 Khái niệm trong kỹ thuật lọc trơn nhiễu ảnh................................................
- 2 Các phương pháp lọc ảnh..............................................................................
- 2.2 Lọc trung vị.............................................................................................
- 2.2 Lọc trung bình.........................................................................................
- 2.2 Lọc hình học.........................................................................................
- 2.2 Lọc điều hòa.........................................................................................
- 2.2 Lọc phi điều hòa...................................................................................
- PHẦN KẾT LUẬN..............................................................................................
- TÀI LIỆU THAM KHẢO....................................................................................
CHƯƠNG 1: TỔNG QUAN VỀ PHÉP NHÂN CHẬP.........................................
1 Phép nhân chập là gì?................................................................................
Tích chập là kỹ thuật quan trọng trong Xử Lý Ảnh, được sử dụng chính
yếu trong các phép toán trên ảnh như: đạo hàm ảnh, làm trơn ảnh, trích xuất biên
cạnh trong ảnh. Trình bày về kỹ thuật tích chập trong lĩnh vực xử lý ảnh và cách
hiện thực nó sử dụng ngôn ngữ C++ có hỗ trợ của thư viện openCV.
1 Định nghĩa về pháp nhân chập..................................................................
Theo toán học, tích chập là phép toán tuyến tính, cho ra kết quả là một hàm
bằng việc tính toán dựa trên hai hàm đã có [f và g]. Đối với phép lọc ảnh, phép
tích chập giữa ma trận lọc [kernel] và ảnh cho ra kết quả ảnh đã được xóa nhiễu.
Ta có công thức tích chập giữa hàm ảnh f[x, y] và bộ lọc k[x, y] [kích thước mxn]
như sau:
Thành phần không thể thiếu của phép tích chập là ma trận kernel. Điểm
neo [anchor point] của kernel sẽ quyết định vùng ma trận tương ứng trên ảnh để
tích chập, thông thường anchor point được chọn là tâm của kernel. Giá trị mỗi
phần tử trên kernel được xem như là hệ số tổ hợp với lần lượt từng giá trị độ xám
của điểm ảnh trong vùng tương ứng với kernel.
Phép tích chập được hình dung thực hiện bằng việc dịch chuyển ma trận
kernel lần lượt qua tất cả các điểm ảnh trong ảnh, bắt đầu từ góc bên trái trên của
ảnh. Và đặt anchor point tương ứng tại điểm ảnh đang xét. Ở mỗi lần dịch
chuyển, thực hiện tính toán kết quả mới cho điểm ảnh đang xét bằng công thức
tích chập.
Xem minh hoạ thực hiện: Ảnh minh hoạ theo thứ tự từ trái qua phải và từ
trên xuống dưới. Ảnh cuối cùng là kết quả sau khi thực hiện di chuyển kernel hết
toàn bộ ảnh. Ký hiệu: [1] ảnh nguồn, [2] kernel, [3] ảnh kết quả.
Phân phối: f * g + f * h = f * [g + h]
Do tính chất kết hợp của phép tích chập, khi một phép xử lý ảnh yêu cầu thực
hiện tích chập liên tiếp với nhiều bộ lọc [kernel] f * g * h. Ta có thể tính toán
trước ma trận kernel để "giảm độ phức tạp tính toán" k = v * h do kích thước ma
trận kernel hầu như rất nhỏ so với ảnh. Lúc này, thay vì thực hiện tích chập theo
thứ tự r = [f * g] * h, ta thực hiện r = f * [v * h] = f * k.
Ký hiệu:
- f: hàm ảnh
- g: bộ lọc thứ nhất
- h: bộ lọc thứ hai
- r: hàm ảnh kết quả
1 Ưu điểm và nhược điểm trong phép nhân chập.........................................
Mỗi phần tử trong ma trận kernel nên là số nguyên: như trong ví dụ trên, các
phần tử trong kernel thực ra là số thực, tuy nhiên, tôi thực hiện chuyển sang ma
trận số nguyên với số hạng chung cho tất cả các phần tử, kết quả tích chập sẽ
nhân cho số hạng chung này.
Kernel nên thực hiện lưu trong mảng một chiều.
Tạo ma trận chỉ số truy cập nhanh, với cách này có thể truy cập nhanh đến
pixel trên ảnh, tương ứng với kernel mà không cần tính toán chỉ số thêm lần nữa.
Ví dụ, với kernel [size: 3x3, anchor point: center].
[-1;-1] [-1;0] [-1;1] [0;-1] [0;0] [0;1] [1;-1] [1;0] [1;1]
CHƯƠNG 2: KỸ THUẬT LỌC SỐ TRONG XỬ LÝ ẢNH................................
2 Khái niệm trong kỹ thuật lọc trơn nhiễu ảnh................................................
Lọc nhiễu ảnh là công đoạn tiền xử lý trong xử lý ảnh số, nhằm nâng cao
chất lượng hình ảnh cho mắt con người hoặc để phục vụ cho các công đoạn sau,
xử lý tốt công đoạn này sẽ giúp cho các công đoạn sau tiến hành được dễ dàng
hơn.
Có nhiều loại nhiễu khác nhau[ nhiễu sạn, nhiễu cộng, nhiễu nhân,...] và
cũng có nhiều phương pháp lọc nhiễu khác nhau. Tuy nhiên, tùy từng loại nhiễu
mà ta nên sử dụng phương pháp lọc nhiễu nào cho phù hợp vì không phải một
phương pháp có thể lọc được hết tất cả các loại nhiễu.
Nhiễu là phần tử ảnh mà giá trị của nó trội hơn so với các phần tử xung
quanh. Xét theo tần số, các phần tử nhiễu có tần số cao so với các điểm xung
quanh. Tuy nhiên, khái niệm này chỉ mang tính chất tương đối.
2 Các phương pháp lọc ảnh..............................................................................
2.2 Lọc trung vị
Bộ lọc trung vị là bộ lọc làm mượt phi tuyến trong miền không gian.
Bộ lọc trung vị là một trong những bộ lọc theo thống kê thứ tự.
Nó thay thế giá trị của điểm ảnh bằng trung vị của các mức xám của các
điểm ảnh lân cận
Với các ảnh nhiễu dàn đều trên toàn ảnh có khả năng làm mờ nhiễu, giảm
sự khác biệt về mức sáng giữa các điểm ảnh của ảnh gốc và các điểm ảnh bị
nhiễu tác động. Phương pháp này lọc tốt đối với những ảnh bị nhiễu random như
nhiễu Gaussian hoặc nhiễu Uniform.
Quá trình làm mờ nhiễu cũng đồng thời làm mờ ảnh, vì bộ lọc trung bình
có xu hướng cân bằng cường độ ánh sáng các điểm ảnh. Cũng như bộ lọc
Median, với các ảnh có kích thước lớn thì số phép toán phải cần thực hiện lớn.
Bộ lọc trug bình có vai trò làm trơn ảnh có thể xem như bộ lọc thông cao, nhưng
lại làm mờ đường biên của các đối tượng bên trong ảnh, và nhọc liễu tiêu không
được tốt lắm.
2.2 Lọc hình học
Cả phương pháp lọc trung bình và lọc hình học đều là các phương pháp
lọc không gian, nó có vai trò làm trơn ảnh. Giống như phương pháp lọc trung
bình, phương pháp này lọc tốt hơn đối với những ảnh bị nhiễu Random nhiễu
Gaussian hoặc nhiễu Uniform.
Ảnh sau bị lọc cũng bị mờ đi và làm mất đi ít nhiều độ chi tiết của ảnh.
Với nhiễu dạng đường như hình dưới đây thì kết quả cũng không tốt nhiễu to ra
và đậm lên.
2.2 Lọc điều hòa
Bộ lọc trung bình điều hòa là một trong những bộ lọc trung bình được
chúng tôi sử dụng để xử lý dữ liệu ảnh trong miền không gian. Chúng ta có thể
sử dụng bộ lọc trung bình sóng hài để loại bỏ nhiễu muối. Tương tự như tiếng ồn
muối tiêu còn được gọi là tiếng ồn xung, không có khả năng xảy ra các xung có
cường độ thấp hơn. Tuy nhiên, nó không thành công đối với tiếng ồn hạt tiêu.
Bộ lọc này làm việc tốt cho các ảnh nhiễu trắng hoặc đen. Bộ lọc này làm
việc được với nhiễu Gauss và có thể duy trì thông tin chi tiết tốt hơn bộ loc trung
bình số học. Bộ lọc điều hòa làm việc tốt với nhiễu muối [salt noise], nhưng
không được tốt cho nhiễu tiêu [peper noise].
Dữ liệu demo phép nhân chập lọc ảnh trơn nhiễu
Phần mềm: chương trình được viết bằng phần mềm pycharm
Phần code:
import numpy as np import scipy as sp import itertools as it import matplotlib as plt from scipy import signal from matplotlib import FuncAnimation
plt.style['dark_background'] # comment out for "light" theme plt["font"] = 12
plt["figure"] = [ 12 , 7 ]
def RGB_convolve[im1, kern]: im2 = np_like[im1] for dim in range[im1[- 1 ]]: # loop over rgb channels im2[:, :, dim] = sp.signal[im_data[:, :, dim], kern, mode="same", boundary="symm"] return im
def RGB2RGBA[arr, fill_value= 1 ]: """Add an alpha channel to an RGB array""" if arr[- 1 ] >= 4 : return arr arr2 = np[shape=[*arr[:- 1 ], 4 ], fill_value=fill_value, dtype=arr] arr2[:, :, :- 1 ] = arr/255. return arr
FNAME = "blurryA"
FNAME = "ducks"
T = 10 # seconds FPS = 30 FTOTAL = T*FPS # total number of frames
KERNELS = {"Edge Detection 3x3": np[[[- 1 , - 1 , - 1 ], [- 1 , 8 , - 1 ], [- 1 , - 1 , - 1 ]]], "Sharpen 3x3": np[[[ 0 , - 1 , 0 ], [- 1 , 5 , - 1 ], [ 0 , - 1 , 0 ]]]}
kernel_name = "Sharpen 3x3"
kernel_name = "Edge Detection 3x3"
kernel = KERNELS[kernel_name]
im_data = RGB2RGBA[plt[FNAME].astype[np]]
im_filtered = RGB_convolve[im_data, kernel] im_filtered[:, :, - 1 ] = 1
im_display = np[im_data]
im_filtered[:,:,:-1] -= np[np[im_filtered[:,:,:-1], axis =
2]]
Normalise to whiteim_filtered[:,:,:-1] -= np[im_filtered[:,:,:-1]]im_filtered[:,:,:-1] /= 1/3 * np[np[im_filtered[:,:,:-1],
axis = 2]]
Normalise to individual RGBim_filtered[:,:,:-1] -= np[im_filtered[:,:,:-1]]im_filtered[:,:,:-1] /= np[im_filtered[:,:,:-1]]
fig, [axL, axR] = plt[ncols= 2 , constrained_layout=True] fig[kernel_name] imL = axL[im_data, interpolation="none"] # remove interpolation=... imR = axR[im_data, interpolation="none"] # remove interpolation=... axR_xlim[axL_xlim[]], axR_ylim[axL_ylim[]] axL['off'], axR['off']