SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
ÔN TẬP CHUYÊN ĐỀ 1 - 2014
(xử lý ảnh và nhân dạng)
Lê Thiện Hào-10110034
Câu 1: Cân bằng histogram.
a. Viết công thức
 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
r dwwp
0
)(
với pr(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
jr rp
0
)(
với k= 0,1,2,…,L-1
b. Lập trình
void HistogramEqulization(Mat imgin, Mat imgout)
{
int M=imgin.size().height; int
N=imgin.size().width; int x,y;
int r, h[L]; 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);
double s[L]; int j,k;
for(k=0;k<L;k++)
{
s[k]=0; for(j=0;j<=k;j++)
s[k]+=p[j];
}
for(x=0;x<M;x++)
for(y=0;y<N;y++)
{
r=imgin.at<uchar>(x,y);
imgout.at<uchar>(x,y)=uchar((L-1)*s[r]);
}
return;
}
c. Hàm trong openCV.
boxFilter(imgin,imgout,CV_8UC1,Size(m,n));
GaussianBlur(imgin,imgout,Size(15,15),10);
Câu 2: Lọc median. (lọc trung vị)
a. Viết công thức
Mô tả thuật toán như sau: rê ma trận trên ảnh đến khi nào đủ 9 giá trị trên ma trận 3x3thì tiến hành sắp xếp ma trận
này tăng dần từ trái qua phải từ trên xuống dưới, vào thay phần tử chính giữa cũ bằng phần tử chính giữa mới.
b. Lập trình
void Sort(Mat w)
{
int size=w.size().height*w.size().width; int
i,j;
uchar temp; for(i=0;i<size-
1;i++)
for(j=i+1;j<size;j++)
if(w.data[i]>w.data[j])
{
temp=w.data[i];
w.data[i]=w.data[j];
w.data[j]=temp;
}
}
void MedianFilter(Mat imgin,Mat imgout)
{
int M=imgin.size().height; int
N=imgin.size().width; int x,y,s,t;
uchar r,sd;
int m=5,n=5; int
a=m/2,b=n/2;
Mat w=Mat(m,n,CV_8UC1,CV_RGB(0,0,0));
for(x=a;x<M-a;x++) for(y=b;y<N-
b;y++)
{
for(s=-a;s<=a;s++) for(t=-
b;t<=b;t++)
w.at<uchar>(s+a,t+b)=imgin.at<uchar>(x+s,y+t);//LAY
RA MATRAN 3X3
Sort(w);
imgout.at<uchar>(x,y)=w.at<uchar>(a,b);
}
}
c. Hàm trong openCV.
medianBlur(imgin,imgout,5);
Câu 3: Lọc tuyến tính
a. Viết công thức
Tổng quát lọc trong không gian được cho bằng phương trình :
g(x,y)= 
a
as


b
bt
tysxftsw ),(),(
Trong đó :
mxn là kích thước của bộ lọc, m và n thường là số lẻ để bộ lọc có phần tử trung tâm.
a=m/2 và b=n/2 là kích thước nữa bộ lọc.
Phép toán lọc trong không gian được gọi là tổng chập (convolution).
Đối với lọc tuyến tính, mặt nạ lọc thường là bộ lọc trung bình.
Ví dụ: mặt nạ lọc trung bình và mặt nạ Gauss:
b. Lập trình
void MyFilter2D(Mat imgin, Mat imgout, Mat w)
{
int m = w.size().height;
int n = w.size().width;
int a=m/2, b=n/2;
int M = imgin.size().height;
int N = imgin.size().width;
int x, y, s, t;
float r;
for (x=a; x<M-a; x++)
for (y=b; y<N-b; y++)
{
r = 0;
for (s=-a; s<=a; s++)
for (t=-b; t<=b; t++)
r += w.at<float>(s+a,t+b)*imgin.at<uchar>(x+s,y+t);
imgout.at<uchar>(x,y) = (uchar)r;
}
return;
}
void MySmooth(Mat imgin, Mat imgout)
{
int m=35, n=35;
Mat w = Mat(m,n,CV_32F);
int x, y;
for (x=0; x<m; x++)
for (y=0; y<n; y++)
w.at<float>(x,y) = 1.0/(m*n);
filter2D(imgin,imgout,CV_8U,w);
return;
}
x
9
1 1 1 1
1 1 1
1 1 1 16
1
x
1 2 1
2 4 2
1 2 1
Câu 4: Các bước lọc trong miền tần số
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.
Cụ thể P=2M, Q=2N.
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:
Câu 5: Lọc khe để xoá nhiễu Moire
void NotchFiltering(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));
int x, y;
for (x=0; x<M; x++)
for (y=0; y<N; y++)
if ((x+y)%2 == 0)
f.at<Vec2f>(x,y)[0] = imgin.at<uchar>(x,y);
else
f.at<Vec2f>(x,y)[0] = -imgin.at<uchar>(x,y);
// Buoc 4
Mat F = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0));
dft(f,F);
// Buoc 5
Mat H = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0));
double D01 = 12, D02 = 12, D03 = 5, D04 = 5;
double Dk, D_k;
int u, v;
int u1 = 164, v1 = 121;
int u2 = 168, v2 = 61;
int u3 = 210, v3 = 61;
int u4 = 206, v4 = 122;
int n = 4;
for (u=0; u<P; u++)
for (v=0; v<Q; v++) {
Dk = sqrt(1.0*(u-u1)*(u-u1)+1.0*(v-v1)*(v-v1));
D_k = sqrt(1.0*(u-(P-u1))*(u-(P-u1))+1.0*(v-(Q-v1))*(v-(Q-v1)));
H.at<Vec2f>(u,v)[0] =
1.0/(1.0+pow(D01/Dk,2*n))*1.0/(1.0+pow(D01/D_k,2*n));
Dk = sqrt(1.0*(u-u2)*(u-u2)+1.0*(v-v2)*(v-v2));
D_k = sqrt(1.0*(u-(P-u2))*(u-(P-u2))+1.0*(v-(Q-v2))*(v-(Q-v2)));
H.at<Vec2f>(u,v)[0] *=
1.0/(1.0+pow(D02/Dk,2*n))*1.0/(1.0+pow(D02/D_k,2*n));
Dk = sqrt(1.0*(u-u3)*(u-u3)+1.0*(v-v3)*(v-v3));
D_k = sqrt(1.0*(u-(P-u3))*(u-(P-u3))+1.0*(v-(Q-v3))*(v-(Q-v3)));
H.at<Vec2f>(u,v)[0] *=
1.0/(1.0+pow(D03/Dk,2*n))*1.0/(1.0+pow(D03/D_k,2*n));
Dk = sqrt(1.0*(u-u4)*(u-u4)+1.0*(v-v4)*(v-v4));
D_k = sqrt(1.0*(u-(P-u4))*(u-(P-u4))+1.0*(v-(Q-v4))*(v-(Q-v4)));
H.at<Vec2f>(u,v)[0] *=
1.0/(1.0+pow(D04/Dk,2*n))*1.0/(1.0+pow(D04/D_k,2*n));
}
Mat G = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0));
mulSpectrums(F,H,G,DFT_ROWS);
// Buoc 6, 7
Mat g = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0));
idft(G,g,DFT_SCALE);
float r;
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
if ((x+y)%2 == 0)
r = g.at<Vec2f>(x,y)[0];
else
r = -g.at<Vec2f>(x,y)[0];
if (r < 0)
r = 0;
if (r > L-1)
r = L-1;
imgout.at<uchar>(x,y) = (uchar)r;
}
return;
}
Câu 6: Đếm số hạt gạo
void CountRice(Mat imgin,Mat imgout)
{
Mat temp = Mat(imgin.size(),CV_8UC1);
Mat w = getStructuringElement(MORPH_ELLIPSE,Size(81,81));
morphologyEx(imgin,temp,MORPH_TOPHAT,w);
double max;
minMaxLoc(temp,0,&max);
threshold(temp,temp,0.4*max,255,THRESH_BINARY);
medianBlur(temp,temp,5);
int fromTo[] = {0,0,0,1,0,2};
mixChannels(&temp,1,&imgout,1,fromTo,3);
int x, y, M, N;
M = imgout.size().height;
N = imgout.size().width;
Vec3b p;
uchar r, g, b;
int color = 100;
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
p = imgout.at<Vec3b>(x,y);
if (p[0] == L-1 && p[1] == L-1 && p[2] == L-1) {
r = color%256;
g = (color/256)%256;
b = ((color/256)/256)%256;
floodFill(imgout,Point(y,x),CV_RGB(r,g,b));
color++;
}
}
int k, mang[1000];
for (k=0; k<1000; k++)
mang[k] = 0;
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
p = imgout.at<Vec3b>(x,y);
r = p[2];
g = p[1];
b = p[0];
k = r + g*256 + b*256*256;
if (k > 0)
mang[k]++;
}
FILE *fp = fopen("ThongKe.txt","wt");
fprintf(fp,"Co %d hot gaon",color-100);
for (k=0; k<1000; k++)
if (mang[k] > 0)
fprintf(fp,"Mau %3d co %3d pixeln",k,mang[k]);
fclose(fp);
char buffer[256];
sprintf(buffer,"Co %d hot gao",color-100);
putText(imgout,buffer,Point(0,25),FONT_HERSHEY_DUPLEX,0.7,CV_RGB(0,255,0));
return;
}
Câu 7: Nhận dạng khuôn mặt
Các bước nhận dạng khuôn mặt.
Bước 1: Phát hiện khuôn măt dùng thuật toán và file xml có sẳn trong openCV. Dùng Detect and
Display().
Bước 2: Tạo cơ sở dữ liệu gồm 15 mặt, trong đó 10 mặt dùng để học, 5 mặt dùng để nhận dạng.
Bước 3: nhận dạng dùng eigenface.
Lập trình
void training(Ptr<FaceRecognizer> &model)
{
vector<Mat> images; vector<int> labels;
char filename[128]; for(int
i=1;i<=10;i++){
sprintf(filename,"facesBan01%02d.bmp",i); Mat
img=imread(filename,CV_LOAD_IMAGE_GRAYSCALE);
images.push_back(img);
labels.push_back(1);
}
for(int i=1;i<=10;i++){ sprintf(filename,"facesBan02%02d.bmp",i);
Mat img=imread(filename,CV_LOAD_IMAGE_GRAYSCALE);
images.push_back(img);
labels.push_back(2);
}
for(int i=1;i<=10;i++){ sprintf(filename,"facesThayDuc%02d.bmp",i);
Mat img=imread(filename,CV_LOAD_IMAGE_GRAYSCALE);
images.push_back(img);
labels.push_back(3);
}
int num_components=3;
model = createEigenFaceRecognizer(); model-
>train(images,labels);
}
void main()
{
Ptr<FaceRecognizer> model;
training(model);
Mat imgtest=imread("testThayDuc11.bmp",CV_LOAD_IMAGE_GRAYSCALE); printf("%d",model-
>predict(imgtest));
}

Contenu connexe

Tendances (12)

Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien
Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vienChuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien
 
Nmlt C06 Ham
Nmlt C06 HamNmlt C06 Ham
Nmlt C06 Ham
 
Dhmt
DhmtDhmt
Dhmt
 
Nmlt c10 cau_truc
Nmlt c10 cau_trucNmlt c10 cau_truc
Nmlt c10 cau_truc
 
Images compression using huffman algorithm matlab
Images compression using huffman algorithm matlabImages compression using huffman algorithm matlab
Images compression using huffman algorithm matlab
 
Bai de quy
Bai de quyBai de quy
Bai de quy
 
KHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTIT
KHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTITKHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTIT
KHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTIT
 
Hệ Cơ Sở Dữ Liệu Đa Phương Tiện PTIT
Hệ Cơ Sở Dữ Liệu Đa Phương Tiện PTITHệ Cơ Sở Dữ Liệu Đa Phương Tiện PTIT
Hệ Cơ Sở Dữ Liệu Đa Phương Tiện PTIT
 
Lttt matlab chuong 5
Lttt matlab chuong 5Lttt matlab chuong 5
Lttt matlab chuong 5
 
GIAI TICH 12- Phần IX - ÔN TẬP CHƯƠNG I
GIAI TICH 12- Phần IX - ÔN TẬP CHƯƠNG IGIAI TICH 12- Phần IX - ÔN TẬP CHƯƠNG I
GIAI TICH 12- Phần IX - ÔN TẬP CHƯƠNG I
 
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modulesLocal sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
 
Nmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoNmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co So
 

En vedette

Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnh
Tùng Trần
 
Xử lý ảnh PTIT
Xử lý ảnh PTITXử lý ảnh PTIT
Xử lý ảnh PTIT
Tran Tien
 
Ung dung xu ly anh trong thuc te voi thu vien open cv
Ung dung xu ly anh trong thuc te voi thu vien open cvUng dung xu ly anh trong thuc te voi thu vien open cv
Ung dung xu ly anh trong thuc te voi thu vien open cv
Nguyen An
 
Ung dung xu ly anh trong thuc te voi thu vien open cv
Ung dung xu ly anh trong thuc te voi thu vien open cvUng dung xu ly anh trong thuc te voi thu vien open cv
Ung dung xu ly anh trong thuc te voi thu vien open cv
Trinh Giang
 
Xu ly anh
Xu ly anhXu ly anh
Xu ly anh
Chu Lam
 
Giai bai tap_chuong_3truy-van-rbtv
Giai bai tap_chuong_3truy-van-rbtvGiai bai tap_chuong_3truy-van-rbtv
Giai bai tap_chuong_3truy-van-rbtv
nguyen minh
 
Trac nghiem dap an
Trac nghiem dap anTrac nghiem dap an
Trac nghiem dap an
Trí Ibanez
 
Bài giảng envi
Bài giảng enviBài giảng envi
Bài giảng envi
trankha8792
 
Lttt matlab chuong 1
Lttt matlab chuong 1Lttt matlab chuong 1
Lttt matlab chuong 1
Hoa Cỏ May
 
PháT HiệN KhuôN MặT Trong ẢNh
PháT HiệN KhuôN MặT Trong ẢNhPháT HiệN KhuôN MặT Trong ẢNh
PháT HiệN KhuôN MặT Trong ẢNh
chuma nguyen
 
Lttt matlab chuong 4
Lttt matlab chuong 4Lttt matlab chuong 4
Lttt matlab chuong 4
Hoa Cỏ May
 
May hoc 012012
May hoc   012012May hoc   012012
May hoc 012012
Freelancer
 
Luận án tiến sĩ toán học nghiên cứu, phát triển các kỹ thuật tự động tóm tắt ...
Luận án tiến sĩ toán học nghiên cứu, phát triển các kỹ thuật tự động tóm tắt ...Luận án tiến sĩ toán học nghiên cứu, phát triển các kỹ thuật tự động tóm tắt ...
Luận án tiến sĩ toán học nghiên cứu, phát triển các kỹ thuật tự động tóm tắt ...
https://www.facebook.com/garmentspace
 
Phan loai tin_tuc_bao_dien_tu
Phan loai tin_tuc_bao_dien_tuPhan loai tin_tuc_bao_dien_tu
Phan loai tin_tuc_bao_dien_tu
Viet Nam
 

En vedette (20)

Đề cương môn xử lý ảnh
Đề cương môn xử lý ảnhĐề cương môn xử lý ảnh
Đề cương môn xử lý ảnh
 
Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnh
 
Xử lý ảnh PTIT
Xử lý ảnh PTITXử lý ảnh PTIT
Xử lý ảnh PTIT
 
Ung dung xu ly anh trong thuc te voi thu vien open cv
Ung dung xu ly anh trong thuc te voi thu vien open cvUng dung xu ly anh trong thuc te voi thu vien open cv
Ung dung xu ly anh trong thuc te voi thu vien open cv
 
Đề cương xử lý ảnh
Đề cương xử lý ảnhĐề cương xử lý ảnh
Đề cương xử lý ảnh
 
Xử lý ảnh theo phương pháp âm bản, nhị phân, hàm số mũ
Xử lý ảnh theo phương pháp âm bản, nhị phân, hàm số mũXử lý ảnh theo phương pháp âm bản, nhị phân, hàm số mũ
Xử lý ảnh theo phương pháp âm bản, nhị phân, hàm số mũ
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
 
Ung dung xu ly anh trong thuc te voi thu vien open cv
Ung dung xu ly anh trong thuc te voi thu vien open cvUng dung xu ly anh trong thuc te voi thu vien open cv
Ung dung xu ly anh trong thuc te voi thu vien open cv
 
Xu ly anh
Xu ly anhXu ly anh
Xu ly anh
 
Xử lý tín hiệu số
Xử lý tín hiệu sốXử lý tín hiệu số
Xử lý tín hiệu số
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
 
Giai bai tap_chuong_3truy-van-rbtv
Giai bai tap_chuong_3truy-van-rbtvGiai bai tap_chuong_3truy-van-rbtv
Giai bai tap_chuong_3truy-van-rbtv
 
Trac nghiem dap an
Trac nghiem dap anTrac nghiem dap an
Trac nghiem dap an
 
Bài giảng envi
Bài giảng enviBài giảng envi
Bài giảng envi
 
Lttt matlab chuong 1
Lttt matlab chuong 1Lttt matlab chuong 1
Lttt matlab chuong 1
 
PháT HiệN KhuôN MặT Trong ẢNh
PháT HiệN KhuôN MặT Trong ẢNhPháT HiệN KhuôN MặT Trong ẢNh
PháT HiệN KhuôN MặT Trong ẢNh
 
Lttt matlab chuong 4
Lttt matlab chuong 4Lttt matlab chuong 4
Lttt matlab chuong 4
 
May hoc 012012
May hoc   012012May hoc   012012
May hoc 012012
 
Luận án tiến sĩ toán học nghiên cứu, phát triển các kỹ thuật tự động tóm tắt ...
Luận án tiến sĩ toán học nghiên cứu, phát triển các kỹ thuật tự động tóm tắt ...Luận án tiến sĩ toán học nghiên cứu, phát triển các kỹ thuật tự động tóm tắt ...
Luận án tiến sĩ toán học nghiên cứu, phát triển các kỹ thuật tự động tóm tắt ...
 
Phan loai tin_tuc_bao_dien_tu
Phan loai tin_tuc_bao_dien_tuPhan loai tin_tuc_bao_dien_tu
Phan loai tin_tuc_bao_dien_tu
 

Similaire à Xử lý ảnh

Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
Muoivy Wm
 
Bai giang 8_tiep_tuyen
Bai giang 8_tiep_tuyenBai giang 8_tiep_tuyen
Bai giang 8_tiep_tuyen
gadaubac2003
 
4 matlab ly-thuyet_dohoa_
4 matlab ly-thuyet_dohoa_4 matlab ly-thuyet_dohoa_
4 matlab ly-thuyet_dohoa_
Phi Phi
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Chien Dang
 
3_XLA3_Nang cao chat luong anh.pdf
3_XLA3_Nang cao chat luong anh.pdf3_XLA3_Nang cao chat luong anh.pdf
3_XLA3_Nang cao chat luong anh.pdf
HongTrngLm1
 

Similaire à Xử lý ảnh (20)

Bam may
Bam mayBam may
Bam may
 
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
 
Thuchanh Ktdk-matlab
Thuchanh Ktdk-matlabThuchanh Ktdk-matlab
Thuchanh Ktdk-matlab
 
Giai nhanh phuong phap tinh
Giai nhanh phuong phap tinhGiai nhanh phuong phap tinh
Giai nhanh phuong phap tinh
 
Chương 1.pdf
Chương 1.pdfChương 1.pdf
Chương 1.pdf
 
Chuyên đề khảo sát hàm số dành cho lớp 10
Chuyên đề khảo sát hàm số dành cho lớp 10Chuyên đề khảo sát hàm số dành cho lớp 10
Chuyên đề khảo sát hàm số dành cho lớp 10
 
Bai giang 8_tiep_tuyen
Bai giang 8_tiep_tuyenBai giang 8_tiep_tuyen
Bai giang 8_tiep_tuyen
 
Giaitichcoso(PGS.TS.NguyenBichHuy).pdf
Giaitichcoso(PGS.TS.NguyenBichHuy).pdfGiaitichcoso(PGS.TS.NguyenBichHuy).pdf
Giaitichcoso(PGS.TS.NguyenBichHuy).pdf
 
Do hoa may tinh
Do hoa may tinhDo hoa may tinh
Do hoa may tinh
 
07 mat101 bai3_v2.3013101225
07 mat101 bai3_v2.301310122507 mat101 bai3_v2.3013101225
07 mat101 bai3_v2.3013101225
 
Cuc tri ham so (tt)
Cuc tri ham so (tt)Cuc tri ham so (tt)
Cuc tri ham so (tt)
 
2dfgdfgdgfdgdfgdfg
2dfgdfgdgfdgdfgdfg2dfgdfgdgfdgdfgdfg
2dfgdfgdgfdgdfgdfg
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 3
Giáo trình Phân tích và thiết kế giải thuật - CHAP 3Giáo trình Phân tích và thiết kế giải thuật - CHAP 3
Giáo trình Phân tích và thiết kế giải thuật - CHAP 3
 
4 matlab ly-thuyet_dohoa_
4 matlab ly-thuyet_dohoa_4 matlab ly-thuyet_dohoa_
4 matlab ly-thuyet_dohoa_
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
 
CHƯƠNG 2 GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐ
CHƯƠNG 2  GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐCHƯƠNG 2  GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐ
CHƯƠNG 2 GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐ
 
Quy hoạch động
Quy hoạch độngQuy hoạch động
Quy hoạch động
 
Quy Hoach Dong
Quy Hoach DongQuy Hoach Dong
Quy Hoach Dong
 
3_XLA3_Nang cao chat luong anh.pdf
3_XLA3_Nang cao chat luong anh.pdf3_XLA3_Nang cao chat luong anh.pdf
3_XLA3_Nang cao chat luong anh.pdf
 
3_XLA3_Nang cao chat luong anh.pdf
3_XLA3_Nang cao chat luong anh.pdf3_XLA3_Nang cao chat luong anh.pdf
3_XLA3_Nang cao chat luong anh.pdf
 

Plus de jvinhit

Chươngii
ChươngiiChươngii
Chươngii
jvinhit
 

Plus de jvinhit (8)

Web performance fundamental
Web performance fundamentalWeb performance fundamental
Web performance fundamental
 
CSS Căn bản
CSS Căn bảnCSS Căn bản
CSS Căn bản
 
Using The CSharp Sockets Helper Classes
Using The CSharp Sockets Helper ClassesUsing The CSharp Sockets Helper Classes
Using The CSharp Sockets Helper Classes
 
Regular expressions quick reference
Regular expressions quick referenceRegular expressions quick reference
Regular expressions quick reference
 
Network Programming in C#
Network Programming in C#Network Programming in C#
Network Programming in C#
 
Chươngii
ChươngiiChươngii
Chươngii
 
Delegate và event trong C#
Delegate và event trong C#Delegate và event trong C#
Delegate và event trong C#
 
Store procedure
Store procedureStore procedure
Store procedure
 

Dernier

bài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hànhbài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hành
dangdinhkien2k4
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
Xem Số Mệnh
 
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận HạnTử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Kabala
 

Dernier (20)

bài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hànhbài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hành
 
Giáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình PhươngGiáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình Phương
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
 
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận HạnTử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
 
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
 
Kiến thức cơ bản về tư duy số - VTC Net Viet
Kiến thức cơ bản về tư duy số - VTC Net VietKiến thức cơ bản về tư duy số - VTC Net Viet
Kiến thức cơ bản về tư duy số - VTC Net Viet
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiện
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdfGiáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
 
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
các nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ emcác nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ em
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.ppt
 
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng TạoĐề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
 
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhàBài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
 
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vnGiới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
 

Xử lý ảnh

  • 1. ÔN TẬP CHUYÊN ĐỀ 1 - 2014 (xử lý ảnh và nhân dạng) Lê Thiện Hào-10110034 Câu 1: Cân bằng histogram. a. Viết công thức  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 r dwwp 0 )( với pr(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 jr rp 0 )( với k= 0,1,2,…,L-1 b. Lập trình void HistogramEqulization(Mat imgin, Mat imgout) { int M=imgin.size().height; int N=imgin.size().width; int x,y; int r, h[L]; 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); double s[L]; int j,k; for(k=0;k<L;k++) { s[k]=0; for(j=0;j<=k;j++) s[k]+=p[j]; } for(x=0;x<M;x++) for(y=0;y<N;y++) { r=imgin.at<uchar>(x,y); imgout.at<uchar>(x,y)=uchar((L-1)*s[r]); } return; } c. Hàm trong openCV. boxFilter(imgin,imgout,CV_8UC1,Size(m,n)); GaussianBlur(imgin,imgout,Size(15,15),10);
  • 2. Câu 2: Lọc median. (lọc trung vị) a. Viết công thức Mô tả thuật toán như sau: rê ma trận trên ảnh đến khi nào đủ 9 giá trị trên ma trận 3x3thì tiến hành sắp xếp ma trận này tăng dần từ trái qua phải từ trên xuống dưới, vào thay phần tử chính giữa cũ bằng phần tử chính giữa mới. b. Lập trình void Sort(Mat w) { int size=w.size().height*w.size().width; int i,j; uchar temp; for(i=0;i<size- 1;i++) for(j=i+1;j<size;j++) if(w.data[i]>w.data[j]) { temp=w.data[i]; w.data[i]=w.data[j]; w.data[j]=temp; } } void MedianFilter(Mat imgin,Mat imgout) { int M=imgin.size().height; int N=imgin.size().width; int x,y,s,t; uchar r,sd; int m=5,n=5; int a=m/2,b=n/2; Mat w=Mat(m,n,CV_8UC1,CV_RGB(0,0,0)); for(x=a;x<M-a;x++) for(y=b;y<N- b;y++) { for(s=-a;s<=a;s++) for(t=- b;t<=b;t++) w.at<uchar>(s+a,t+b)=imgin.at<uchar>(x+s,y+t);//LAY RA MATRAN 3X3 Sort(w); imgout.at<uchar>(x,y)=w.at<uchar>(a,b); } } c. Hàm trong openCV. medianBlur(imgin,imgout,5);
  • 3. Câu 3: Lọc tuyến tính a. Viết công thức Tổng quát lọc trong không gian được cho bằng phương trình : g(x,y)=  a as   b bt tysxftsw ),(),( Trong đó : mxn là kích thước của bộ lọc, m và n thường là số lẻ để bộ lọc có phần tử trung tâm. a=m/2 và b=n/2 là kích thước nữa bộ lọc. Phép toán lọc trong không gian được gọi là tổng chập (convolution). Đối với lọc tuyến tính, mặt nạ lọc thường là bộ lọc trung bình. Ví dụ: mặt nạ lọc trung bình và mặt nạ Gauss: b. Lập trình void MyFilter2D(Mat imgin, Mat imgout, Mat w) { int m = w.size().height; int n = w.size().width; int a=m/2, b=n/2; int M = imgin.size().height; int N = imgin.size().width; int x, y, s, t; float r; for (x=a; x<M-a; x++) for (y=b; y<N-b; y++) { r = 0; for (s=-a; s<=a; s++) for (t=-b; t<=b; t++) r += w.at<float>(s+a,t+b)*imgin.at<uchar>(x+s,y+t); imgout.at<uchar>(x,y) = (uchar)r; } return; } void MySmooth(Mat imgin, Mat imgout) { int m=35, n=35; Mat w = Mat(m,n,CV_32F); int x, y; for (x=0; x<m; x++) for (y=0; y<n; y++) w.at<float>(x,y) = 1.0/(m*n); filter2D(imgin,imgout,CV_8U,w); return; } x 9 1 1 1 1 1 1 1 1 1 1 16 1 x 1 2 1 2 4 2 1 2 1
  • 4. Câu 4: Các bước lọc trong miền tần số 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. Cụ thể P=2M, Q=2N. 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:
  • 5. Câu 5: Lọc khe để xoá nhiễu Moire void NotchFiltering(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)); int x, y; for (x=0; x<M; x++) for (y=0; y<N; y++) if ((x+y)%2 == 0) f.at<Vec2f>(x,y)[0] = imgin.at<uchar>(x,y); else f.at<Vec2f>(x,y)[0] = -imgin.at<uchar>(x,y); // Buoc 4 Mat F = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0)); dft(f,F); // Buoc 5 Mat H = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0)); double D01 = 12, D02 = 12, D03 = 5, D04 = 5; double Dk, D_k; int u, v; int u1 = 164, v1 = 121; int u2 = 168, v2 = 61; int u3 = 210, v3 = 61; int u4 = 206, v4 = 122; int n = 4; for (u=0; u<P; u++) for (v=0; v<Q; v++) { Dk = sqrt(1.0*(u-u1)*(u-u1)+1.0*(v-v1)*(v-v1)); D_k = sqrt(1.0*(u-(P-u1))*(u-(P-u1))+1.0*(v-(Q-v1))*(v-(Q-v1))); H.at<Vec2f>(u,v)[0] = 1.0/(1.0+pow(D01/Dk,2*n))*1.0/(1.0+pow(D01/D_k,2*n)); Dk = sqrt(1.0*(u-u2)*(u-u2)+1.0*(v-v2)*(v-v2)); D_k = sqrt(1.0*(u-(P-u2))*(u-(P-u2))+1.0*(v-(Q-v2))*(v-(Q-v2))); H.at<Vec2f>(u,v)[0] *= 1.0/(1.0+pow(D02/Dk,2*n))*1.0/(1.0+pow(D02/D_k,2*n)); Dk = sqrt(1.0*(u-u3)*(u-u3)+1.0*(v-v3)*(v-v3)); D_k = sqrt(1.0*(u-(P-u3))*(u-(P-u3))+1.0*(v-(Q-v3))*(v-(Q-v3))); H.at<Vec2f>(u,v)[0] *= 1.0/(1.0+pow(D03/Dk,2*n))*1.0/(1.0+pow(D03/D_k,2*n)); Dk = sqrt(1.0*(u-u4)*(u-u4)+1.0*(v-v4)*(v-v4)); D_k = sqrt(1.0*(u-(P-u4))*(u-(P-u4))+1.0*(v-(Q-v4))*(v-(Q-v4))); H.at<Vec2f>(u,v)[0] *= 1.0/(1.0+pow(D04/Dk,2*n))*1.0/(1.0+pow(D04/D_k,2*n)); }
  • 6. Mat G = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0)); mulSpectrums(F,H,G,DFT_ROWS); // Buoc 6, 7 Mat g = Mat(P,Q,CV_32FC2,CV_RGB(0,0,0)); idft(G,g,DFT_SCALE); float r; for (x=0; x<M; x++) for (y=0; y<N; y++) { if ((x+y)%2 == 0) r = g.at<Vec2f>(x,y)[0]; else r = -g.at<Vec2f>(x,y)[0]; if (r < 0) r = 0; if (r > L-1) r = L-1; imgout.at<uchar>(x,y) = (uchar)r; } return; }
  • 7. Câu 6: Đếm số hạt gạo void CountRice(Mat imgin,Mat imgout) { Mat temp = Mat(imgin.size(),CV_8UC1); Mat w = getStructuringElement(MORPH_ELLIPSE,Size(81,81)); morphologyEx(imgin,temp,MORPH_TOPHAT,w); double max; minMaxLoc(temp,0,&max); threshold(temp,temp,0.4*max,255,THRESH_BINARY); medianBlur(temp,temp,5); int fromTo[] = {0,0,0,1,0,2}; mixChannels(&temp,1,&imgout,1,fromTo,3); int x, y, M, N; M = imgout.size().height; N = imgout.size().width; Vec3b p; uchar r, g, b; int color = 100; for (x=0; x<M; x++) for (y=0; y<N; y++) { p = imgout.at<Vec3b>(x,y); if (p[0] == L-1 && p[1] == L-1 && p[2] == L-1) { r = color%256; g = (color/256)%256; b = ((color/256)/256)%256; floodFill(imgout,Point(y,x),CV_RGB(r,g,b)); color++; } } int k, mang[1000]; for (k=0; k<1000; k++) mang[k] = 0; for (x=0; x<M; x++) for (y=0; y<N; y++) { p = imgout.at<Vec3b>(x,y); r = p[2]; g = p[1]; b = p[0]; k = r + g*256 + b*256*256; if (k > 0) mang[k]++; } FILE *fp = fopen("ThongKe.txt","wt"); fprintf(fp,"Co %d hot gaon",color-100); for (k=0; k<1000; k++) if (mang[k] > 0) fprintf(fp,"Mau %3d co %3d pixeln",k,mang[k]); fclose(fp); char buffer[256]; sprintf(buffer,"Co %d hot gao",color-100); putText(imgout,buffer,Point(0,25),FONT_HERSHEY_DUPLEX,0.7,CV_RGB(0,255,0)); return; }
  • 8. Câu 7: Nhận dạng khuôn mặt Các bước nhận dạng khuôn mặt. Bước 1: Phát hiện khuôn măt dùng thuật toán và file xml có sẳn trong openCV. Dùng Detect and Display(). Bước 2: Tạo cơ sở dữ liệu gồm 15 mặt, trong đó 10 mặt dùng để học, 5 mặt dùng để nhận dạng. Bước 3: nhận dạng dùng eigenface. Lập trình void training(Ptr<FaceRecognizer> &model) { vector<Mat> images; vector<int> labels; char filename[128]; for(int i=1;i<=10;i++){ sprintf(filename,"facesBan01%02d.bmp",i); Mat img=imread(filename,CV_LOAD_IMAGE_GRAYSCALE); images.push_back(img); labels.push_back(1); } for(int i=1;i<=10;i++){ sprintf(filename,"facesBan02%02d.bmp",i); Mat img=imread(filename,CV_LOAD_IMAGE_GRAYSCALE); images.push_back(img); labels.push_back(2); } for(int i=1;i<=10;i++){ sprintf(filename,"facesThayDuc%02d.bmp",i); Mat img=imread(filename,CV_LOAD_IMAGE_GRAYSCALE); images.push_back(img); labels.push_back(3); } int num_components=3; model = createEigenFaceRecognizer(); model- >train(images,labels); } void main() { Ptr<FaceRecognizer> model; training(model); Mat imgtest=imread("testThayDuc11.bmp",CV_LOAD_IMAGE_GRAYSCALE); printf("%d",model- >predict(imgtest)); }