Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 68 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
68
Dung lượng
2,07 MB
Nội dung
ĐềthiXửLýẢnh GV: Trần Tiến Đức
1
Đề thiXửLýẢnh
GV: Trần Tiến Đức
MỤC LỤC
ĐỀ THI VÀ ĐÁP ÁN MÔN XỬ LÝẢNH SỐ
Chương 3 gồm 13 câu từ câu 1 đến câu 13
Câu 1. Xây dựng và cài đặt thuật toán làm âm ảnh.
Đáp án:
Cách làm âm c cho bs=L-1-r ng mc xám, r
là mu vào, s là mu ra
Quan th ta thy: Mu vào, tc là thut toán này bin nh
thành nh trng và trng thành
Cod e :
void Negatives(BYTE **f, BYTE **g)
{
int x, y;
BYTE r,s;
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
r = f[x][y];
S
R
(0,0)
L-1
L-1
Đề thiXửLýẢnh GV: Trần Tiến Đức
2
s = L-1-r;
g[x][y] = s;
}
return;
}
Câu 2. Xây dựng và cài đặt thuật toán biến đổi logarit ảnh.
Đáp án:
bii:
s=c log(1+r)
t
r là mu vào
s là mc u ra
c: hng s
ng hp log = 0.
Quan sát th thng log làm cho nh
tr
Hằng số c được tính như sau:
c log(1+r)
Rõ ràng r=0 thì s=0
Ta cn có: r=L-1 thì s=L-1
c=
)11log(
1
L
L
Vi L = 256 thì c= 45.9859
Cod e :
void Logarithm(BYTE **f, BYTE **g)
{
int x, y;
double r,s;
double c = (L-1)/log(1.0*L);
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
r = f[x][y];
s = c*log(1+r);
g[x][y] = (int)s;
}
return;
}
Intensity
log
L-1
L-1
(0,0)
Negative
Đề thiXửLýẢnh GV: Trần Tiến Đức
3
Câu 3. Xây dựng và cài đặt thuật toán biến đổi lũy thừa ảnh.
Đáp án:
Bic cho b
s=cr
vi r là mu vào, s là mu ra,
c, ng s
nh t
c: được tính như sau:
Ta th th:
r=0 thì s=0
r=L-1 thì s= L-1
L-1=c(L-1)
c=
)1(
1
L
L
Cod e :
void Power(BYTE **f, BYTE **g)
{
int x, y;
double r,s;
double gamma = 5.0;
double c = (L-1)/pow(1.0*(L-1),gamma);
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
r = f[x][y];
s = c*pow(1.0*r,gamma);;
g[x][y] = (int)s;
}
return;
}
γ=0,4
γ=1
γ=1,5
S
R
Đề thiXửLýẢnh GV: Trần Tiến Đức
4
Câu 4. Xây dựng và cài đặt thuật toán biến đổi tuyến tính từng phần.
Đáp án:
Quan sát trên đồ thị ta thấy:
Bii u, làm cho nh trng ít tr thành trng nhiu. Tc là làm
n ca n).
Ta có:
ng thm (x1,y1) và (x2,y2) là:
12
1
yy
yy
=
12
1
xx
xx
Y=
12
12
xx
yy
(x-x1)+y1
n m (0,0) và (r1,s1)
S=
1
1
r
s
r
m (r1,s1) và (r2,s2)
s
L-1
L-1
r
(r2,s2)
(r1,s1)
Đề thiXửLýẢnh GV: Trần Tiến Đức
5
S=
12
12
rr
ss
(r-r1)+s1
m (r2,s2) và (L-1,L-1)
S=
2)1(
2)1(
rL
sL
(r-r2)+s2
c.
Cod e :
void PiecewiseLinear(BYTE **f, BYTE **g)
{
double r1,s1,r2,s2,rmin,rmax,s,r,m,sum;
int x, y;
rmin = f[0][0];
rmax = f[0][0];
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
r = f[x][y];
if (r<rmin)
rmin = r;
if (r>rmax)
rmax = r;
}
r1 = rmin;
s1 = 0;
r2 = rmax;
s2 = L-1;
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
r = f[x][y];
if (r<r1)
s = s1/r1*r;
else if (r<r2)
s = (s2-s1)/(r2-r1)*(r-r1)+s1;
else
s = (L-1-s2)/(L-1-r2)*(r-r2)+s2;
g[x][y] = (int)s;
}
return;
}
Câu 5. Xây dựng và cài đặt thuật toán cân bằng histogram.
Đáp án:
Ma cân bng u
n ca nh.
Đề thiXửLýẢnh GV: Trần Tiến Đức
6
Cân bc cho b
s=T(r)=(L-1)
r
r
dwwp
0
)(
vi p
r
(w) : Xác sut xy ra mc xám w
Trong xác sut, tích phân ca hàm m là hàm phân phi. Công thc trên có w là bin liên
tc, ta không th lp trình nó. Ta phi dùng công thc ri rc:
s
k
=T(r
k
)=(L-1)
k
j
jr
rp
0
)(
v-1
Cod e :
void HistogramEqualization(BYTE **f, BYTE **g)
{
double T[L];
int k, j, x, y;
BYTE r;
double s;
double p[L];
Histogram(f,p);
for (k=0; k<L; k++) {
T[k] = 0;
for (j=0; j<=k; j++)
T[k] = T[k] + p[j];
}
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
r = f[x][y];
s = T[r];
g[x][y] = (int)(s*(L-1));
}
return;
}
Câu 6. Xây dựng và cài đặt thuật toán đặc tả histogram.
Đáp án:
Không phi cân bng hit, nnh v
ta mong mun.
Đề thiXửLýẢnh GV: Trần Tiến Đức
7
Tính histogram ca nh ri suy ra hàm bii histogram t ng
p
r
(r
j
)=
MN
n
j
s
k
=T(r
k
)=
k
j
jr
rp
0
)(
Cho histogram mong mun p
z
(z
i
)
Bii histogram mong mun.
v
k
=G(z
k
)=
k
k
j
jz
szp
0
)(
Cho r
k
, ta suy ra z
k
z
k
= G
-1
(T(r
k
))
Mục tiêu: có mu vào r
k
, ta suy ra mu ra z
k
.
Ví d cho histogram mong mu sau:
Đề thiXửLýẢnh GV: Trần Tiến Đức
8
mô t histogram mong mung th
m (x
1
,y
1
) và (x
2
,y
2
):
12
1
yy
yy
=
12
1
xx
xx
=>y=
12
12
xx
yy
(x-x1)+y1
Cod e :
void HistogramSpecification(BYTE **f, BYTE **g)
{
double pz1,pz2,pz3,pz4,pz5,pz6;
int z1,z2,z3,z4,z5,z6;
double pz[L];
double G[L];
double pr[L];
double T[L];
double sum;
int z, k, i, j, x, y;
// Histogram dac ta
z1 = 0; pz1 = 0.75;
z2 = 10; pz2 = 7;
z3 = 20; pz3 = 0.75;
z4 = 180; pz4 = 0;
z5 = 200; pz5 = 0.7;
z6 = 255; pz6 = 0;
for (z=0; z<L; z++)
if (z<z2)
pz[z] = (pz2-pz1)/(z2-z1)*(z-z1) + pz1;
else if (z<z3)
pz[z] = (pz3-pz2)/(z3-z2)*(z-z2) + pz2;
else if (z<z4)
Đề thiXửLýẢnh GV: Trần Tiến Đức
9
pz[z] = (pz4-pz3)/(z4-z3)*(z-z3) + pz3;
else if (z<z5)
pz[z] = (pz5-pz4)/(z5-z4)*(z-z4) + pz4;
else
pz[z] = (pz6-pz5)/(z6-z5)*(z-z5) + pz5;
// Chuan hoa pz sao cho tong xac suat bang 1
sum = 0;
for (z=0; z<L; z++)
sum += pz[z];
for (z=0; z<L; z++)
pz[z] = pz[z]/sum;
for (k=0; k<L; k++) {
G[k] = 0;
for (i=0; i<=k; i++)
G[k] = G[k] + pz[i];
}
// Histogram cua anh
Histogram(f,pr);
for (k=0; k<L; k++) {
T[k] = 0;
for (j=0; j<=k; j++)
T[k] = T[k] + pr[j];
}
// Matching 2 histogram
BYTE r;
double s;
for (x=0; x<M; x++)
for (y=0; y<N; y++) {
r = f[x][y];
s = T[r];
for (k=0; k<L; k++)
if (G[k]>=s)
break;
g[x][y] = k;
}
return;
}
Câu 7. Xây dựng và cài đặt thuật toán cân bằng histogram cục bộ.
Đáp án:
ng hp 2 mc xám k nhau chênh lch quá nh, nu ta cân bng histogram t ng
s không có kt qung hi dùng histogram cc b.
Chn ca s c l có phn t trung tâm, ví d: m=n=3, cân bng histogram ca
d liu ly t ca s và thay phn t trung tâm bng phn t mi.
Đề thiXửLýẢnh GV: Trần Tiến Đức
10
Cod e :
void LocalHistogram(BYTE **w, int m, int n, double *p)
{
int x, y, k;
BYTE r;
for (k=0; k<L; k++)
p[k] = 0;
for (x=0; x<m; x++)
for (y=0; y<n; y++) {
r = w[x][y];
p[r]++;
}
for (k=0; k<L; k++)
p[k] = p[k]/(m*n);
return;
}
void LocalHistogramEqualization(double *p, double *T)
{
int j, k;
for (k=0; k<L; k++) {
T[k] = 0;
for (j=0; j<=k; j++)
T[k] = T[k] + p[j];
}
return;
}
void LocalEnhancement(BYTE **f, BYTE **g)
{
int m, n;
m = 3; n = 3;
BYTE **w;
int x, y, s, t, a, b;
a = m/2;
b = n/2;
double p[L];
double T[L];
BYTE r;
w = (BYTE **)Alloc2D(m,n,sizeof(BYTE));
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[s+a][t+b] = f[x+s][y+t];
LocalHistogram(w,m,n,p);
LocalHistogramEqualization(p,T);
r = f[x][y];
g[x][y] = (int)((L-1)*T[r]);
}
[...]... toán nâng cao độ nét ảnh bằng mặt nạ làm nhòe và lọc tăng cường Đáp án: Nâng cao độ nét của ảnh dùng mặt nạ làm nhòe thường dùng trong công nghệ in ảnh, quá trình gồm các bước sau đây: - Làm nhòe ảnh Lấy ảnh gốc trừ với ảnh đã làm nhòe ta được một ảnh mới gọi là mặt nạ làm nhòe Cộng mặt nạ làm nhòe với ảnh gốc 23 Đề thiXửLýẢnh GV: Trần Tiến Đức _ Kí hiệu: f ( x, y ) : là ảnh đã làm nhòe, Mặt... trong ảnhthì ta dung lần 4 mặt nạ này lần lượt quét qua ảnh Ta gọi đầu ra tại 1 điểm ảnh là R1, R2, R3 và R4 Điểm ảnh cần lấy có Khi lập trình có 4 đầu ra, ta lấy điểm ảnh có Rmax Lưu { tổng các hệ số trong mặt nạ đều = 0 Mục đích là khi quét mặt nạ qua vùng ảnh có độ sáng đồng đều thì đầu ra sẽ = 0 Code: void LineDetectionLaplace(BYTE **f, BYTE **g) { int **temp; int x, y, r; 34 Đề thiXửLýẢnh GV:... hiện cạnh ảnh bằng đạo hàm cấp một Đáp án: Ta dùng mặt nạ đạo hàm cấp một để phát hiện cạnh ảnh Có 2 mặt nạ đạo hàm cấp một thường dùng là Sobel, Prewitt 35 Đề thiXửLýẢnh GV: Trần Tiến Đức Gọi gx là ảnh đạo hàm theo hướng x gy là ảnh đạo hàm theo hướng y Ảnh độ lớn: hay dùng công thức xấp xỉ Ảnh của hướng (direction) hay là ảnh góc pha: Ta có thể kết hợp thêm với ngưỡng để lấy những điểm ảnh trên... Xn[x][y]) { flag = FALSE; goto Thoat; 32 Đề thiXửLýẢnh GV: Trần Tiến Đức } Thoat: for (x=0; x . Đề thi Xử Lý Ảnh GV: Trần Tiến Đức
1
Đề thi Xử Lý Ảnh
GV: Trần Tiến Đức
MỤC LỤC
ĐỀ THI VÀ ĐÁP ÁN MÔN XỬ LÝ ẢNH SỐ
Chương 3.
L-1
Đề thi Xử Lý Ảnh GV: Trần Tiến Đức
2
s = L-1-r;
g[x][y] = s;
}
return;
}
Câu 2. Xây dựng và cài đặt thuật toán biến đổi logarit ảnh.