S hi u BM1/QT PĐT RĐTV/00 ố ệ Trang 1 Tr ng ĐHSPKT TP HCM ườ Đ THI MÔN X LÝ NH SỀ Ử Ả Ố Khoa Công ngh Thông tin ệ MÃ MÔN H C Ọ 1279230 B môn Tin h c c sộ ọ ơ ở H c kỳ I – Năm h c 2014 2015ọ ọ N I DUNG[.]
Trang 1Tr ườ ng ĐHSPKT TP.HCM Đ THI MÔN: X LÝ NH S Ề Ử Ả Ố
Khoa Công ngh Thông tin ệ MÃ MÔN H C: Ọ 1279230
B môn Tin h c c s ộ ọ ơ ở H c kỳ I – Năm h c 2014-2015 ọ ọ
- -
N I DUNG Đ THI: Ộ Ề
Câu 1: (2đ)
M c đích c a vi c cân b ng histogram? Xây d ng và cài đ t thu t toán cân ụ ủ ệ ằ ự ặ ậ
b ng histogram t đ ng ằ ự ộ
Câu 2: (3đ)
Trình bày các bướ ọ ảc l c nh trong mi n t n s (g m 7 bề ầ ố ồ ước)
Trình bày b l c Notch Reject và ng d ng b l c Notch Reject đ xoá nhi u ộ ọ ứ ụ ộ ọ ể ễ
Moiré
Xây d ng và cài đ t thu t toán xoá nhi u Moiré c a nh ự ặ ậ ễ ủ ả
Câu 3: (2.5đ)
Xây d ng và cài đ t thu t toán đ m h t g o ự ặ ậ ế ạ ạ
Câu 4: (2.5đ)
Xây d ng và cài đ t thu t toán nh n d ng khuôn m t dùng phự ặ ậ ậ ạ ặ ương pháp khuôn
m t riêng (eigenface) ặ
-H T - Ế
Trang 2Tr ườ ng ĐHSPKT TP.HCM ĐÁP ÁN MÔN: X LÝ NH S Ử Ả Ố
Khoa Công ngh Thông tin ệ MÃ MÔN H C: Ọ 1279230
B môn Tin h c c s ộ ọ ơ ở H c kỳ I – Năm h c 2014-2015 ọ ọ
- -
Câu 1: (2đ)
M c đích c a cân b ng histogram là làm cho histogram đ ng đ u Khi đó ta làm tăng ụ ủ ằ ồ ề
được đ tộ ương ph n c a nh ả ủ ả
Cân b ng histogram đằ ược cho b ng phằ ương trình:
s=T(r)=(L-1)r p r w dw
0
) (
v i pớ r(w) : Xác su t x y ra m c xám ấ ả ứ w
Trong xác su t, tích phân c a hàm m t đ là hàm phân ph i Công th c trên có ấ ủ ậ ộ ố ứ w là
bi n liên t c, ta không th l p trình nó Ta ph i dùng công th c r i r c: ế ụ ể ậ ả ứ ờ ạ
sk=T(rk)=(L-1)
k j
j
r r p
0
) (
v i k= 0,1,2,…,L-1 ớ
Code:
void HistogramEqualization(Mat imgin,Mat imgout)
{
int x, y, M, N;
int h[L];
int r;
M = imgin.size().height;
N = imgin.size().width;
for (r=0; r<L; r++)
h[r] = 0;
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
r = imgin.at<uchar>(x,y);
h[r]++;
} double p[L];
for (r=0; r<L; r++)
p[r] = 1.0*h[r]/(M*N);
Trang 3double T[L];
int j, k;
for (k=0; k<L; k++) {
T[k] = 0;
for (j=0; j<=k; j++)
T[k] += p[j];
}
double s;
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
r = imgin.at<uchar>(x,y);
s = T[r];
imgout.at<uchar>(x,y) = (uchar)((L-1)*s);
} return;
}
Câu 2: (3đ)
L c nh trong mi n t n s g m 7 bọ ả ề ầ ố ồ ước sau đây:
Bước 1: Cho nh đ u vào f(x,y) có kích thả ầ ước MxN M r ng nh có kích thở ộ ả ước là PxQ OpenCV có hàm xác đ nh kích thị ước P và Q t i u ố ư
Bước 2: Thêm zero vào ph n m r ng, ta đầ ở ộ ượ ảc nh fp(x,y)
Bước 3: Nhân fp(x,y) v i (-1)ớ x+y đ d i F(0,0) vào tâm nh ể ờ ả
Bước 4: Bi n đ i Fourier c a nh Bế ổ ủ ả ở ước 3 ta được F(u,v)
Bước 5: Cho hàm l c có giá tr th c H(u,v) đ i x ng qua tâm (P/2,Q/2) Th c hi n ọ ị ự ố ứ ự ệ phép nhân
G(u,v) = F(u,v)H(u,v)
Bước 6: Thu đượ ảc nh đã x lý b ng bi n đ i Fourier ngử ằ ế ổ ược, l y ph n th c và d i tr ấ ầ ự ờ ở
l i g c t a đ ạ ố ọ ộ
Bước 7: B ph n đã m r ng, ta thu đỏ ầ ở ộ ượ ảc nh g(x,y) có kích thước MxN
Bi u di n b ng s đ kh i: ể ễ ằ ơ ồ ố
Trang 5Code:
void RemoveMoire(Mat imgin, Mat imgout)
{
int M = imgin.size().height;
int N = imgin.size().width;
// Buoc 1, 2, 3
int P = getOptimalDFTSize(M);
int Q = getOptimalDFTSize(N);
Mat f = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0));
Mat F = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0));
int x, y, u, v;
for (x=0; x<M; x++)
for (y=0; y<N; y++)
if ((x+y)%2 == 0)
f.at<Vec2f>(x,y)[0] = 1.0*imgin.at<uchar>(x,y);
else
f.at<Vec2f>(x,y)[0] = -1.0*imgin.at<uchar>(x,y);
// Buoc 4
dft(f,F);
// Buoc 5
Mat H = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0));
double D01 = 5, D02 = 5, D03 = 15, D04 = 15;
int u1 = 44, v1 = 59, u2 = 40, v2 = 119, u3 = 86, v3 = 58, u4 = 82, v4 = 119; double D1, D1Tru, D2, D2Tru, D3, D3Tru, D4, D4Tru;
double r;
for (u=0; u<P; u++)
for (v=0; v<Q; v++) {
D1 = sqrt(1.0*(u-u1)*(u-u1) + 1.0*(v-v1)*(v-v1));
D1Tru = sqrt(1.0*(u-P+u1)*(u-P+u1) + 1.0*(v-Q+v1)*(v-Q+v1));
r = (1/(1+pow(D01/D1,2*4)))*(1/(1+pow(D01/D1Tru,2*4)));
D2 = sqrt(1.0*(u-u2)*(u-u2) + 1.0*(v-v2)*(v-v2));
D2Tru = sqrt(1.0*(u-P+u2)*(u-P+u2) + 1.0*(v-Q+v2)*(v-Q+v2));
r *= (1/(1+pow(D02/D2,2*4)))*(1/(1+pow(D02/D2Tru,2*4))); D3 = sqrt(1.0*(u-u3)*(u-u3) + 1.0*(v-v3)*(v-v3));
D3Tru = sqrt(1.0*(u-P+u3)*(u-P+u3) + 1.0*(v-Q+v3)*(v-Q+v3));