Tải bản đầy đủ

Tài liệu ôn thi Xử Lý Ảnh – Thầy Trần Tiến Đức

Xử Lý Ảnh – Thầy Trần Tiến Đức

Trang 1

Tài Liệu Ôn Thi 30% Xử Lý ảnh
1/ ImageNegatives
Phép biến đổi làm âm ảnh
(trắng ->đen và đen->trắng)
for (m=0; mfor (n=0; nr = f[m][n];
s = L-1-r;
g[m][n] = s;
SetPixel(hdc,xc+n,m,RGB(s,s,s));
}
2/ Image Threshold
Biến đổi ảnh đa mức xám thành ảnh nhị phân
sum = 0;
for (m=0; mfor (n=0; nsum += f[m][n];

mean = sum/(M*N);
for (m=0; mfor (n=0; n{
r = f[m][n];
if (rs = 0;
else
s = 255;
}
3/ Image BitPlane
Lấy từng phần làm mặt phẳng bit
for (m=0; mfor (n=0; n{
r = f[m][n];
s = r & 0x01;
if (s>0)
s=255;
else
s=0;
g[m][n] = s;
SetPixel(hdc,xc+n,m,RGB(s,s,s));
}

Chúc Anh Em Thi Tốt

4/ ImageHistogram
Ghi ra histogram của 1 ảnh
for (r = 0; rh[r] = 0;
for (m=0; mfor (n=0; nr = f[m][n];
h[r]++;
}
for (r = 0; rp[r] = 1.0*h[r]/(M*N);
Scale = 3000;
MoveToEx(hdc,xc,yc,NULL);


LineTo(hdc,xc+255,yc);
for (r = 0; rq = Round(Scale*p[r]);
MoveToEx(hdc,xc+r,yc,NULL);
LineTo(hdc,xc+r,yc-q);
}
5/ Image HistogramEqualization
Cân bằng Histogram
for (r = 0; rh[r] = 0;
for (m=0; mfor (n=0; nr = f[m][n];
h[r]++;
}
for (r=0; rp[r] = 1.0*h[r]/(M*N);
for (k=0; ks[k] = 0;
for (j=0; j<=k; j++)
s[k] = s[k] + p[j];
}
for (m=0; mfor (n=0; nr = f[m][n];
t = 255*s[r];
g[m][n] = Round(t);
}


Xử Lý Ảnh – Thầy Trần Tiến Đức

6/ ImageLog
Biến đổi ảnh logic
for (m=0; mfor (n=0; nr = f[m][n];
gray=105.8865*log10(1.0+r);
s=round(gray);
g[m][n] = s;
SetPixel(hdc,xc+n,m,RGB(s,s,s));
}
7/ Imagepow
Biến đổi ảnh theo hàm mũ
for (m=0; mfor (n=0; nr = f[m][n];
gray = c*pow(r,gama);
s=round(gray);
g[m][n] = s;
SetPixel(hdc,xc+n,m,RGB(s,s,s));
}
8/ Imagelinear
Biến đổi ảnh tuyến tính từng phần
rmin=f[0][0];
rmax=f[0][0];
for (m=0; mfor (n=0; n{
r=f[m][n];
if(rrmin=r;
if(r>rmin)
rmax=r;
}
r1=rmin;s1=0;
r2=rmax;s2=255;

Chúc Anh Em Thi Tốt

Trang 2

for (m=0; mfor (n=0; n{
r = f[m][n];
if(r<=r1)
x=1.0*s1*r/r1;
else if (r<=r2)
x=1.0*(s2-s1)*(r-r1)/(r2-r1)+s1;
else
x=1.0*(255-s2)*(r-r2)/(255-r2)+s2;
s=round(x);
g[m][n] = s;
}
9/ Gauss
for (r=0; rpr1[r] = 10.0*exp(-(r-mean1)*(r-mean1)/
(2.0*sigma1*sigma1))/(sqrt(2*pi)*sigma1);
for (r=0; rpr2[r] = exp(-(r-mean2)*(r-mean2)/
(2.0*sigma2*sigma2))/(sqrt(2*pi)*sigma2);
for (r=0; rpr[r] = pr1[r] + pr2[r];
/* Chuan hoa sao cho tong xac suat bang 1*/
x = 0;
for (r=0; rx = x + pr[r];
for (r=0; rpr[r] = pr[r]/x;
return;


Xử Lý Ảnh – Thầy Trần Tiến Đức

10/ ImageHistogram Specification
Thống kê Histogram cải thiện chất lượng ảnh
for (r = 0; rpr[r] = 0;
for (m=0; mfor (n=0; nr = f[m][n];
pr[r] = pr[r] + 1;
}
for (r=0; rpr[r] = pr[r]/(M*N);
x = 0;
for (r=0; rx = x + pr[r];
for (k=0; ks[k] = 0;
for (j=0; j<=k; j++)
s[k] = s[k] + pr[j];
}
Gauss(pz);
11/ ThresholdSpatialFilter
Lọc lấy ngưỡng
for (a=0; afor (b=0; bw[a][b] = 1;
sum = 0;
for (a=0; afor (b=0; bsum = sum + w[a][b];
a = (m-1)/2;
b = (n-1)/2;
g = Alloc2DByte(M,N);
for (x=0; xfor (y=0; yr = 0;
for (s=-a; s<=a; s++)
for (t=-b; t<=b; t++) {
p = x+s;
q = y+t;
if (p<0)
p = M+p;
if
(p>=M)
p = p-M;
if (q<0)
q = N+q;
if (q>=N)
q = q-N;

Chúc Anh Em Thi Tốt

Trang 3

x = 0;
for (r=0; rx = x + pz[r];
for (k=0; kv[k] = 0;
for (i=0; i<=k; i++)
v[k] = v[k] + pz[i];
}
double sk;
int z;
for (m=0; mfor (n=0; nr = f[m][n];
sk = s[r];
for (z=0; zif (v[z] >= sk)
break;
g[m][n] = z;
}


Xử Lý Ảnh – Thầy Trần Tiến Đức

Trang 4

r = r + w[s+a][t+b]*f[p][q];
}
r = r/sum;
gray = Round(r);
g[x][y] = gray;
SetPixel(hdc,xc+y,x,RGB(gray,gray,gray));
}
max = g[0][0];
for (x=0; xfor (y=0; yif (g[x][y] > max)
max = g[x][y];
threshold = max*25/100;
for (x=0; xfor (y=0; yif (g[x][y] >= threshold)
g[x][y] = 255;
else
g[x][y] = 0;
gray = g[x][y];
}
12/ GaussFilter
Lọc trơn sử dụng Gauss
for (x=0; xfor (y=0; yw[x][y] = exp(-1.0*(x-mean)*(x-mean)/(2*sigma*sigma))*exp(-1.0*(y-mean)*(y-mean)/(2*sigma*sigma));
Scale = w[0][0];
for (x=0; xfor (y=0; yw[x][y] = Round(w[x][y]/Scale);
sum = 0;
for (a=0; afor (b=0; bsum = sum + w[a][b];
a = (m-1)/2;
b = (n-1)/2;
g = Alloc2DByte(M,N);
for (x=0; xfor (y=0; yr = 0;
for (s=-a; s<=a; s++)
for (t=-b; t<=b; t++) {
p = x+s;
q = y+t;
if (p<0)
p = M+p;

Chúc Anh Em Thi Tốt


Xử Lý Ảnh – Thầy Trần Tiến Đức

Trang 5
if

(p>=M)
p = p-M;

if (q<0)
q = N+q;
if (q>=N)
q = q-N;
r = r + w[s+a][t+b]*f[p][q];
}
}
13/ Median Filter
Lọc thống kê
for (x=1; xfor (y=1; ya[0] = f[x-1][y-1];
a[1] = f[x-1][y];
a[2] = f[x-1][y+1];
a[3] = f[x][y-1];
a[4] = f[x][y];
a[5] = f[x][y+1];
a[6] = f[x+1][y-1];
a[7] = f[x+1][y];
a[8] = f[x+1][y+1];
Sort(a);
gray = a[4];
g[x][y] = gray;
SetPixel(hdc,xc+y,x,RGB(gray,gray,gray));
}
14/ Spatial Filte
Lọc làm trơn ảnh
for (a=0; afor (b=0; bw[a][b] = 1;
sum = 0;
for (a=0; afor (b=0; bsum = sum + w[a][b];
a = (m-1)/2;
b = (n-1)/2;
g = Alloc2DByte(M,N);
for (x=0; xfor (y=0; yr = 0;
for (s=-a; s<=a; s++)
for (t=-b; t<=b; t++) {
p = x+s;
q = y+t;

Chúc Anh Em Thi Tốt

if (p<0)
p = M+p;
if
(p>=M)
p = p-M;
if (q<0)
q = N+q;
if (q>=N)
q = q-N
r = r + w[s+a][t+b]*f[p][q];
}


Xử Lý Ảnh – Thầy Trần Tiến Đức

15/ AddNoise
Thêm nhiễu vào ảnh
for (m=0; mfor (n=0; nA = 1.0*rand()/RAND_MAX;
R = sqrt(2*sigma*sigma*log(1.0/(1.0-A)));
B = 1.0*rand()/RAND_MAX;
theta = 2*pi*B;
C = R*cos(theta);
r = f[m][n];
s = Round(r + C);
if (s>(L-1))
s = L-1;
g[m][n] = s;
SetPixel(hdc,xc+n,m,RGB(s,s,s));
}
16/ ImageAverage
Lấy trung bình ảnh từ các ảnh có nhiễu nhằm có được ảnh ko nhiễu
{
// Doc Noise01.pgm
fp = fopen("Noise01.pgm","rb");
fscanf(fp,"%s %d %d %d ",Id,&N,&M,&temp);
g01 = Alloc2DByte(M,N);
fread(*g01,sizeof(BYTE),M*N,fp);
fclose(fp);
// Doc Noise02.pgm
fp = fopen("Noise02.pgm","rb");
fscanf(fp,"%s %d %d %d ",Id,&N,&M,&temp);
g02 = Alloc2DByte(M,N);
fread(*g02,sizeof(BYTE),M*N,fp);
fclose(fp);
// Doc Noise03.pgm
fp = fopen("Noise03.pgm","rb");
fscanf(fp,"%s %d %d %d ",Id,&N,&M,&temp);
g03 = Alloc2DByte(M,N);
fread(*g03,sizeof(BYTE),M*N,fp);
fclose(fp);
// Doc Noise04.pgm
fp = fopen("Noise04.pgm","rb");
fscanf(fp,"%s %d %d %d ",Id,&N,&M,&temp);
g04 = Alloc2DByte(M,N);
fread(*g04,sizeof(BYTE),M*N,fp);
fclose(fp);

Chúc Anh Em Thi Tốt

Trang 6


Xử Lý Ảnh – Thầy Trần Tiến Đức

Trang 7

// Doc Noise05.pgm
fp = fopen("Noise05.pgm","rb");
fscanf(fp,"%s %d %d %d ",Id,&N,&M,&temp);
g05 = Alloc2DByte(M,N);
fread(*g05,sizeof(BYTE),M*N,fp);
fclose(fp);
// Doc Noise06.pgm
fp = fopen("Noise06.pgm","rb");
fscanf(fp,"%s %d %d %d ",Id,&N,&M,&temp);
g06 = Alloc2DByte(M,N);
fread(*g06,sizeof(BYTE),M*N,fp);
fclose(fp);
// Doc Noise07.pgm
fp = fopen("Noise07.pgm","rb");
fscanf(fp,"%s %d %d %d ",Id,&N,&M,&temp);
g07 = Alloc2DByte(M,N);
fread(*g07,sizeof(BYTE),M*N,fp);
fclose(fp);
// Doc Noise08.pgm
fp = fopen("Noise08.pgm","rb");
fscanf(fp,"%s %d %d %d ",Id,&N,&M,&temp);
g08 = Alloc2DByte(M,N);
fread(*g08,sizeof(BYTE),M*N,fp);
fclose(fp);
g = Alloc2DByte(M,N);
for (m=0; mfor (n=0; ns = g01[m][n] + g02[m][n] + g03[m][n] + g04[m][n] + g05[m][n] + g06[m][n] + g07[m][n] + g08[m][n];
s = s/8;
g[m][n] = s;

Chúc Anh Em Thi Tốt



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×