Bài giảng Xử lý ảnh số - Xử lý ảnh trong miền không gian
Chia nhân chập thành các vùng con. Tính độ sáng
trung bình của mỗi vùng con.
Chọn độ sáng trung bình nào có phương sai nhỏ
nhất làm độ sáng của pixel trong nhân chập lớn
đang xét
36 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 1386 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Xử lý ảnh số - Xử lý ảnh trong miền không gian, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
XỬ LÝ ẢNH TRONG
MIỀN KHÔNG GIAN
NGÔ QUỐC VIỆT
TPHCM-2012
1. Các xử lý logic và số học trên ảnh
Các thao tác logic
Trừ ảnh , trung bình ả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
Bộ lọc tuyến tính làm trơn
Các bộ lọcOrder-Statistics
4. Các bộ lọc không gian làm nét ảnh
5. Các giải thuật khử nhiễu
2Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt
Thực hiện các phép logic giữa hai hoặc nhiều ảnh.
Cụ thể
NOT c = a
OR c = a + b
AND c = a b
XOR c = a b = a (b) + (a b)
SUB c = a \ b = a – b = a (b)
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
3Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt
4Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt
Gốc
Mặt nạ AND
Gốc
Mặt nạ OR
Sử dụng các thao tác logic trên ma trận củaOpenCV
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);
cvNamedWindow("Logics", CV_WINDOW_AUTOSIZE);
cvShowImage("Logics", img3);
cvWaitKey(0);
cvDestroyWindow("Logics:");
cvReleaseImage(&img1);
cvReleaseImage(&img2);
return 0;
}
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 5
Thực hiện trên các pixel của ảnh xám
Thường sử dụng toán tử SUB nhằm tách phần nổi
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ệuOutput
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 = (2b -1 ) - a Nguyên
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 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
Có thể ứng dụng để làm giảm nhiễu trong ảnh. Bằng
cách lấy trung bình pixel từ các ảnh nhiễu (ngẫu
nhiên, nhiệt, v.v) để tạo ra pixel cùng tọa độ trong
ảnh output.
Cho K ảnh nhiễu khác nhau, ảnh trung bình được
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
),(),(),( yxnyxfyxg ii
K
i
i yxg
K
yxg
1
),(
1
),(
Hàm noise
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”
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 9
),()),(( yxfyxgE
),(),(
1
yxgyxg iK
Dùng các hàm
rand(): (rand()/(float)0x7fff)-0.5;
cvGetSize: lấy kích thước ảnh
cvCloneImage: tạo ảnh mới
cvGetReal2D: get pixel value
cvSetReal2D: set pixel value
Bà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
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).
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 11
Phép toán chập là
trung tâm của hầu
hết xử lý trên ảnh
Filter/Mask được di
chuyển từng pixel
trên ảnh và thực
hiện chập để tạo ra
giá trị điểm ảnhmới
Hình ảnh thể hiện
cơ chế lọc
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 12
Liên tục: Tích chập của 2 hàm f(x) và h(x) được định
nghĩa bởi:
Rời rạc:
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 13
dmmxhmfxhxfxg )()()()()(
k
knhkfnhnfng )()()()()(
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:
Rời rạc
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 14
dmdnnymxhnmfyxhyxfyxg ),(),(),(),(),(
l k
lnkmhlkf
nmhnmfnmg
),(),(
),(),(),(
Kích thước kernel mxn, ảnh kích thước MxN, tích
chập được định nghĩa bởi
Thông thường, nhân chập có dạng vuông (m=n),
vớim và n là số lẻ.
Chú ý: tâm của nhân chập thường ở giữa cửa cổ
chập.
Tại một vị trí bất kỳ, pixel đích sẽ bằng tổng các
tích giữa pixel nguồn với các phần tử tương ứng
trong nhân
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 15
a
al
b
bk
lkhlykxfyxg ),(),(),(
2/)1( nb
2/)1( ma
Tích chập giữa f(M1xN1) và nhân h(M2xN2) có thể tạo
ra các ma trận có kích thước như sau, tùy thuộc vào
kiểu chập.
Giữ nguyên kích thước: M1xN1 (same convolution)
Tăng kích thước : (M1+M2-1)x(N1+N2-1) (full
convolution)
Giảm kích thước: (M1-M2+1)x(N1-N2+1) (valid
convolution)
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 16
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
Độ phức tạp khi tính toán trên mỗi điểm ảnh từ
O(J*K) giảm xuốngO(J+K).
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 17
)()(),( jhkhkjh colrow
1
0
1
0
)(),()(),(
J
j
col
K
k
row jhknjmakhnmc
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 18
Giữ nguyên kích thước
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 19
Tăng kích thước
Tâm ma trận chập
nằm ngoài ảnh
Giảm kích thước
Ma trận chập nằm
gọn trong ảnh
for(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)) = height
|| (x+(j-kMiddleWidth)) = width) {
result = 0;
}
else {
result = input[y+(i-kMiddleHeight), x+(j-kMiddleWidth)] * kernel[I, j];
}
sum += result;
}
}
result[y, x] = sum;
}
}
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 20
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
Làm trơn hoặc mờ ảnh: giảm nhiễu, giảm chi tiết nhỏ.
Làm nét ảnh
Phát hiện biên (trình bày chi tiết trong bài giảng sau)
Các bộ lọc không gian thường có kích thước 3x3
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ận
trong “Xla_BaiGiang04”)
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 21
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ân
chập.
Còn được gọi là bộ lọc trung bình hay lowpass filter.
Các bộ lọc “đều” có dạng chữ nhật hay tròn.Cụ thể
Kết quả các cụm pixel nhỏ (nhỏ hơn kích thước nhân
chập) sẽ bị “hòa” vào các vùng pixel lớn hơn.
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 22
11111
11111
11111
11111
11111
25
1
),( kjhrect
01110
11111
11111
11111
01110
21
1
),( kjhcirc
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
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 23
111
111
111
9
1
),( kjhrect
121
242
121
16
1
),( kjh
a
as
b
bt
a
as
b
bt
tsw
tysxftsw
yxg
),(
),(),(
),(
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ọc
phi tuyến (trung vị, Kuwahara)
Tam giác: là phép chập của hai bộ lọc đều đồng
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
12321
24642
36963
24642
12321
81
1
),( kjhrect
Dạng chóp
00100
02220
12521
02220
00100
25
1
),( kjhcirc
Dạng nón
Kết quả làm trơn ảnh với bộ lọc trung bình có kích
thước 3, 5, 9, 15, 35
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 25
Ảnh gốc
Có nhiều cách để tạo bộ lọc Gauss (tham khảo tài
liệu [1] trang 96-100).
Bộ lọcGauss là mờ/trơn ảnh
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 26
0005000
0518321850
0186410064180
532100100100325
0186410064180
0518321850
0005000
#include "highgui.h"
#include "cv.h"
void main() {
IplImage* src = cvLoadImage("lena.jpg", 1);
IplImage* dst = cvCreateImage(cvGetSize(src),
src->depth, src->nChannels);
cvSmooth(src, dst, CV_BLUR, 3, 3);
cvNamedWindow("src", 1);
cvShowImage("src", src);
cvNamedWindow("dst", 1);
cvShowImage("dst", dst);
cvReleaseImage(&src); cvReleaseImage(&dst);
cvWaitKey(0);
}
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 27
Bà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)
Bộ lọc Kuwahara
Cho phép giữ lại các “cạnh” trên ảnh trong quá
trình làm trơn.
Trung vị: cho dãy {x1, x2, , xn} , trung vị của dãy
được xác định bởi
Nhận xét: min tạiMed({xi}).
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 29
evenn
n
xor
n
x
oddn
n
x
xMed n
1
2
1
2
1
2
})({
n
i
ixx
1
Tìm trung vị trong phần ảnh đang xét (cửa sổ quét
qua)
Gán giá trị cho pixel “tâm”.
Ví dụ:
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 30
)()}(|)({ PMedPWqqI
elsePMed
PMedPIPI
PI
)(
0)()()(
)(
1212
1124
12164
2321
I
1212
1124
1224
2321
I
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 31
Sắ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.
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 32
noisy
blurred
median
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 33
3x3-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ới
các bộ lọc làm trơn ảnh
Lọc trung vị duy trì cạnh tốt hơn so với blurring
filter.
Chia nhân chập thành các vùng con. Tính độ sáng
trung bình của mỗi vùng con.
Chọn độ sáng trung bình nào có phương sai nhỏ
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
Bộ lọc Miền Kiểu Giá Tách được
Đều Không gian Tuyến tính Vuông Có
Đều Không gian Tuyến tính Tròn Không
Tam giác Không gian Tuyến tính Vuông Có
Tam giác Không gian Tuyến tính Tròn Không
Gauss Không gian Tuyến tính Có
Trung vị Không gian Phi tuyến Vuông Không
Kuwahara Không gian Phi tuyến Không Không
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 35
Sinh viên sử dụng các hàm sau để thực hiện yêu cầu
là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 trongOpenCV)
Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 36
Các file đính kèm theo tài liệu này:
- xla_baigiang_03_6755.pdf