Thực hiện trên các pixel của ảnh xámvà nền Bài giảng Xử lý ảnh-TS... Bằngcách lấy trung bình pixel từ các ảnh nhiễu ngẫunhiên, nhiệt, v.v để tạo ra pixel cùng tọa độ trongảnh output.xá
Trang 1XỬ LÝ ẢNH TRONG MIỀN KHÔNG GIAN
NGÔ QUỐC VIỆT
Trang 21. Các xử lý logic và số học trên ảnh
2. Các bộ lọc không gian cơ bản
3. Các bộ lọc không gian làm trơn ảnh
Trang 3 Thực hiện các phép logic giữa hai hoặc nhiều ảnh.
Chỉ cần 3 toán tử: AND, OR, NOT
Mỗi thao tác thực hiện trên từng điểm ảnh
Trang 44 Bài giảng Xử lý ảnh-TS Ngô Quốc Việt
Gốc
Gốc
Trang 5 Sử dụng các thao tác logic trên ma trận của OpenCV
int _tmain(int argc, _TCHAR* argv[])
{
IplImage *img1 = cvLoadImage(“ \\ \\images\\building.jpg");
IplImage *img2 = cvLoadImage(".\\ \\images\\black.jpg");
IplImage *img3, iplhdr;
CvMat * mat1, * mat2, mat3, mathdr1, mathdr2;
mat1 = cvGetMat(img1, &mathdr1);
mat2 = cvGetMat(img2, &mathdr2);
mat3 = *mat1;
cvAnd(mat1, mat2, &mat3); //cvOr; cvNot; cvAdd; cvSub
img3 = cvGetImage(&mat3, &iplhdr);
Trang 6 Thực hiện trên các pixel của ảnh xám
và nền
Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 6
Thao tác Định nghĩa Kiểu dữ liệu Output
ADD c = a + b Nguyên SUB c = a – b Nguyên MUL c = a * b Nguyên hoặc thực DIV c = a / b Thực
LOG c = log (a) Thực EXP c = exp(a) Thực SQRT c = sqrt(a) Thực TRIG c = sin/cos/tan(a) Thực INVERT c = (2 b -1 ) - a Nguyên
Trang 7 Nhằm loại bớt phần “nền” ra khỏi ảnh cần phân tích(y khoa, thiên văn, …)
Nguồn: R F Gonzalez & R.Wood
Trang 8 Có thể ứng dụng để làm giảm nhiễu trong ảnh Bằngcách lấy trung bình pixel từ các ảnh nhiễu (ngẫunhiên, nhiệt, v.v) để tạo ra pixel cùng tọa độ trongảnh output.
xác định bởi
Ảnh được làm rõ hơn bằng tạo ra K ảnh nhiễu (ngẫu nhiên, muối tiêu – thảo luận sau), và lấy trung bình các ảnh này.
Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 8
) , ( )
, ( )
, (x y f x y n x y
y x g
1
) , (
1 )
, (
Hàm noise
Trang 9 Trung bình của ảnh nhiễu tiến gần đến ảnh tốt f(x,y).
Phương sai
K càng tăng nhiễu sẽ giảm
Sinh viên hãy viết chương trình giảm nhiễu bằng kỹ
thuật “trung bình ảnh”
),())
,(
) , ( )
, (
1
y x g y
cvGetSize: lấy kích thước ảnh
cvCloneImage: tạo ảnh mới
cvGetReal2D: get pixel value cvSetReal2D: set pixel value
Trang 10Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 10
K = 8 noisy images K = 16 noisy images
K = 64 noisy images K = 128 noisy images Ảnh bị nhiễu Gần giống với ảnh gốc
Trang 11 Dựa trên cáp phép toán về tích chập (convolution) trên
lân cận của từng pixel.
Lân cận vuông của một pixel sẽ được thực hiện chập với subimage cùng kích thước để tạo ra giá trị mới của pixel đang xét.
Subimage gọi là: filter (bộ lọc), mask (mặt nạ), kernel
(nhân chập), template (mẫu chập), hay window (cửa
sổ chập).
Phép toán chập là trung tâm của hầu hết xử lý trên ảnh
Trang 12 Filter/Mask được di
chuyển từng pixeltrên ảnh và thựchiện chập để tạo ragiá trị điểm ảnh mới
cơ chế lọc
Trang 13 Liên tục: Tích chập của 2 hàm f(x) và h(x) được định
h n
f n
Trang 14 Liên tục: Tích chập của 2 hàm f(x) và h(x) hai chiều
được định nghĩa bởi:
h l k f
n m h n
m f
n m g
) ,
( ) , (
) , ( )
, ( )
, (
Trang 15 Kích thước kernel mxn, ảnh kích thước MxN, tích
chập được định nghĩa bởi
b
b k
l k h l y
k x
f y
x
2 / ) 1 (
n b
2 / ) 1 (
a
Trang 16 Tích chập giữa f(M 1 xN 1 ) và nhân h(M 2 xN 2 ) có thể tạo
ra các ma trận có kích thước như sau, tùy thuộc vàokiểu chập
Giữ nguyên kích thước: M 1 xN 1(same convolution)
Tăng kích thước : (M 1 +M 2 -1)x(N 1 +N 2 -1) (fullconvolution)
Giảm kích thước: (M 1 -M 2 +1)x(N 1 -N 2 +1) (validconvolution)
Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 16
Trang 17 Nhân chập h(j,k) là tách được nếu
Khi đó, phép lọc có thể thực hiện theo cách sau
O(J*K) giảm xuống O(J+K).
) ( )
( )
, (
) ( )
, (
J
j
col K
k
row k a m j n k h j h
n m c
Trang 18Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 18
Giữ nguyên kích thước
Trang 20for(int y = 0; y < height; ++y) {
for(int x = 0; x < width; ++x) {
sum = 0;
for(int i = 0; i < kHeight-1; i++) {
for(int j = 0; j < kWidth-1; j++) {
if((y+(i-kMiddleHeight)) < 0 || (y+(i-kMiddleHeight)) >= height
|| (x+(j-kMiddleWidth)) < 0 || (x+(j-kMiddleWidth)) >= width) { result = 0;
Trang 21 Sử dụng các nhân chập với các hệ số thay đổi có thểtạo ra các hiệu ứng khác nhau trên ảnh output Một
số hiệu ứng của lọc không gian
hoặc 5x5 Một số trường hợp dùng ma trận 7x7
Ngoài ra có thể sử dụng các lọc phi tuyến (thảo luậntrong “Xla_BaiGiang04”)
Trang 22 Sử dụng bộ lọc không gian tuyến tính để tính giá trịpixel output là trung bình của các pixel trong nhânchập.
Còn được gọi là bộ lọc trung bình hay lowpass filter
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
25
1 )
, ( j k
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0
21
1 ) , (j k
h circ
Trang 23 Có thể dùng các bộ lọc biến thể khác để làm trơnảnh
Mặt nạ thứ hai được gọi là lấy trung bình có trọng
số Nghĩa là các pixel sẽ được nhân với các hệ sốkhác nhau
Với trung bình có trọng số, pixel output được xácđịnh bởi
1 1 1
1 1 1 9
1 ) ,
2 4 2
1 2 1 16
1 )
,
( k j h
b
b t
t s w
t y s x f t s w y
x g
) , (
) ,
( ) , ( )
, (
Trang 24 Một số bộ lọc làm trơn ảnh khác: tam giác, Gauss,
bộ lọc trên miền Fourier (thảo luận sau), các bộ lọcphi tuyến (trung vị, Kuwahara)
nhất (đều chữ nhật hoặc đều tròn)
Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 24
2 4 6 4 2
3 6 9 6 3
2 4 6 4 2
1 2 3 2 1
81
1 ) , ( j k
0 2 2 2 0
1 2 5 2 1
0 2 2 2 0
0 0 1 0 0
25
1 )
, ( j k
h circ
Dạng nón
Trang 25 Kết quả làm trơn ảnh với bộ lọc trung bình có kíchthước 3, 5, 9, 15, 35
Ảnh gốc
Trang 26 Có nhiều cách để tạo bộ lọc Gauss (tham khảo tàiliệu [1] trang 96-100).
5 0
0 0
0 5 18
32 18
5 0
0 18 64
100 64
18 0
5 32 100
100 100
32 5
0 18 64
100 64
18 0
0 5 18
32 18
5 0
0 0 0
5 0
0 0
Trang 28Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 28
Bộ lọc trung vị
Giá trị điểm ảnh output trong nhân chập đang xét
bằng giá trị độ sáng thứ (J*K)/2 trong phần ảnhđang được chập
Một biến thể: thay vì lọc trung vị, có thể lọc phần
trăm Nghĩa là thay vì lấy 50% giá trị sáng màbằng p% (từ 0% - lọc cực tiểu - đến 100% - lọc cựcđại)
Cho phép giữ lại các “cạnh” trên ảnh trong quá
trình làm trơn
Trang 29 Trung vị: cho dãy {x 1 , x 2 , …, x n} , trung vị của dãyđược xác định bởi
n x or
n x
odd n
n x x
Med n
1 2
1 2
1 2 })
1
Trang 30 Tìm trung vị trong phần ảnh đang xét (cửa sổ quétqua)
Gán giá trị cho pixel “tâm”
Ví dụ:
Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 30
) ( )}
(
| ) ( {I q qW P Med P
Med
P Med P
I P
I P
I
) (
0 )
( )
( )
( )
2
1 1 2
4
1 2 16 4
2 3 2
1 1 2 4
1 2 2 4
2 3 2 1
I
Trang 31Sắp xếp các cường độ sáng trong lân cận
của p
131 133 133 136 140 143 147
152
154 157 160 162 163 164 165 171
p
median được gán cho pixel
tại vị trí p
trong ảnh output.
Trang 32Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 32
noisy
blurred
median
Trang 333x3-median x 1 3x3-blur x 1 Ảnh nhiễu
Lọc trung vị cho kết quả khử nhiễu tốt hơn so vớicác bộ lọc làm trơn ảnh
Lọc trung vị duy trì cạnh tốt hơn so với blurringfilter
Trang 34 Chia nhân chập thành các vùng con Tính độ sángtrung bình của mỗi vùng con.
nhất làm độ sáng của pixel trong nhân chập lớnđang xét
Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 34
Trang 35Bộ lọc Miền Kiểu Giá Tách được
Trang 36 Sinh viên sử dụng các hàm sau để thực hiện yêu cầulàm trơn ảnh với các nhân chập khác nhau.
cvFilter2D: để thực hiện lọc ảnh (đổi nhân chập để làm trơn ảnh)
cvSmooth: làm trơn ảnh với các nhân chập được định nghĩa sẵn trong OpenCV)
Bài giảng Xử lý ảnh-TS Ngô Quốc Việt 36