数字图像处理经典题目(包含操作步骤和Matlab源码)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.归纳一下我们所学过的正交变换有哪些共同特点?在图像处理中怎样应用这些特点?对下面图像(moon.tif)进行傅氏变换并平移到中心点。

(注:先对图像进行灰度格式转换)
答:(1)我们所学过的正交变换(傅利叶变换、离散余弦变换、沃尔什变换、哈尔变换)的共同特点有:
a.都是将数字图像通过正交函数由空域转变成频域;
b.都是在频域(变换域中)完成图像处理,并在空域的复函数和频域的复函数之间建立唯一的对应关系,不仅可以完成空域中的许多处理功能,还能完成在空域难以完成,或完成效果不好的处理功能;
c.能保持原函数的奇偶性;
d.正交变换是可逆的过程;
e.正交变换能使复杂信号的处理简单化
(2)根据正交变换的特点,我们可以有效地在图像处理中应用他们,这些应用包括:a.图像边缘检测。

例如利用傅氏变换可以保留图像高频分量而削弱或滤掉低频分量,达到边缘检测的目的。

b.图像恢复。

根据相应的退化模型和知识重建或恢复原始的图像,即将图像退化的过程模型化,并据此采取相反的过程以得到原始的图像。

图像的恢复可在频域内完场。

c.图像重建。

投影函数在空域中转动一个角度后的傅氏变换和它的傅氏变换在转动相同的角度后的结果一样,可以利用这点对图像进行重建。

d.图像压缩:可以直接通过傅里叶系数来压缩数据,比如常用的离散余弦变换。

e.图像去噪。

绝大部分噪音都是图像的高频分量,可以通过低通滤波器来滤除高频噪声。

f.在图像分析和扫描中,用傅里叶描述子描述区域边界点的二维坐标,在纹理分析中,可以用傅里叶频谱的频率特性来描述周期的或者几乎周期的二维图像模式的方向性。

(3)对图像(moon.tif)进行傅氏变换并平移到中心点
a.MatLab中所用命令:
I = imread('moon.tif');
imshow(I);
D=double(I)/255;
figure,imshow(D);
F=fft2(D);
figure,imshow(F);
%fftshift是位移函数,将左上角的原点移至中心
Y=fftshift(F);
figure,imshow(Y);
b.处理后相应的图像:
傅氏变换傅氏变换后移到中心点
2. 在图像处理中小波变换的主要用途是什么?对下图进行小波变换。

(注:先将此图像变为索引图像)
利用二维小波变换(正变换)命令SWC = swt2(X,N,'wname')或[A,H,V,D] = swt2(X,N,'wname')
分解下列图像(lena.bmp)二层,小波函数用’db2’,并用图像显示结果。

答:(1)图像处理中小波变换的主要用途:
小波变换没有频域变量,变换后的函数是尺度和位置参数的函数且仍在空域中,其结果是对原函数的位置和尺度的分解。

每一幅小波变换分解图是原函数在位移点的尺度放大或缩小。

是一个时间和频率的局域变换,因而能有效的从信号中提取信息,通过伸缩和平移等运算功能对函数或信号进行多尺度细化分析,解决了傅立叶变换不能解决的许多问题。

它的特点是压缩比高,压缩速度快,压缩后能保持信号与图像的特征不变,且在传递中可以抗干扰。

它还具有多分辨率,也叫多尺度的特点,可以由粗及精的逐步观察信号。

鉴于其特点,小波变换的应用领域十分广泛,包括:数学领域的许多学科;信号分析、图象处理;量子力学、理论物理;军事电子对抗与武器的智能化;计算机分类与识别;音乐与语言的人工合成;医学成像与诊断;地震勘探数据处理;大型机械的故障诊断等方面。

例如:①在数学方面,它已用于数值分析、构造快速数值方法、曲线曲面构造、微分方程求解、控制论等。

②在信号分析方面的滤波、去噪声、压缩、传递等。

③在图象处理方面的图象压缩、分类、识别与诊断、去污等。

④在医学成像方面的减少B超、CT、核磁共振成像的时间,提高分辨率等。

(2)对lena.bmp图进行小波变换:
a.MatLab中所用命令:
I=imread('lena.bmp');
[X, map] = gray2ind(I,128); %变为128级灰度索引图像
subplot(221)
image(X, map);
title('Original image');
nbcol = size(map,1);
cod_X = wcodemat(X,nbcol);
subplot(222)
image(cod_X)
title('index image');
colormap(map)
[ca,chd,cvd,cdd] = swt2(X,2,'db2'); %将图像分解为两层
for k = 1:2
cod_ca = wcodemat(ca(:,:,k),nbcol);
cod_chd = wcodemat(chd(:,:,k),nbcol);
cod_cvd = wcodemat(cvd(:,:,k),nbcol);
cod_cdd = wcodemat(cdd(:,:,k),nbcol);
decl = [cod_ca,cod_chd;cod_cvd,cod_cdd];
subplot(2,2,k+2)
image(decl)
title(['SWT dec.: approx. ', ...
'and det. coefs (lev. ',num2str(k),')']);
colormap(map)
end
b.处理结果:
3. 截取下面图像eight.tif的右上角钱币并保存和显示此部分(写出命令和显示图)。

答:(1)MatLab中所用命令:
I=imread('eight.tif');
I2=imcrop(I,[70 20 100 80]);%这里用的是给出截取范围的方法,
imshow(I),figure,imshow(I2)
(2)处理后图像:
作它的直方图均衡化变换。

答:直方图均衡化是将原图的直方图的频率分布变换为均匀分布从而得到一幅新图的变换方法。

是以累积分布函数变换法为基础的直方图修正法。

即只要将原分布的灰度等级(r)映射为它的累积分布函数(S)即可,假定变换函数为:s=T(r)=∫0r P r(w)dw,离散情况下其累积分布函数为:
得到变换函数:
s0=T(r0)=Pr(r0)=0.14
s1=T(r1)=Pr(r0)+Pr(r1)=0.14+0.30=0.44
s2=T(r2)=Pr(r0)+Pr(r1)+ Pr(r2)= 0.14+0.30+0.06=0.50
同理可得s3=0.58 s4=0.82 s5=0.88 s6=0.92 s7=1.000
通过修正得到:s0≈1/7 s1≈3/7 s2≈3/7
s3≈4/7 s4≈6/7 s5≈6/7 s6≈1 s7=1
得到5个灰度等级,将其直方图均衡化变换数据列表:
5. 选择适当方法(增强,形态学或图像恢复等)对下图(noise.png)进行去噪声处理。

写出命令并显示效果图。

答:使用中值滤波去噪(图像增强的方法)。

命令:img = imread('noise.png');
imshow(img)
L = medfilt2(img,[6 6]);
figure,imshow(L)
结果如下:
试用哈夫曼码,B2码,和自然码进行编码,并计算其平均长,信息熵和编码效率。

(2)对土星图像(saturn.tif)用余弦变换进行压缩(采用的mask中的1分别为10,6,3,1,如下图),写出命令及显示结果。

mask = [1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
答:(1)各种编码方式及其相关计算:
a .哈夫曼码
信息源 概率
a 3
0.30
0.3
(00) (00) (00)
a 1 0.25 0.25 (01) (01) (01) a 6 0.2 0.2 (11) (11) a 5 () a 4 () a 2 (1001)
平均码长:
=2*0.3+2*0.25+2*0.2+3*0.1+4*0.1+4*0.05=2.4
信息熵:
∑=-=j
i i i P P H 1
2log
= -(0.1*log 20.1+0.1*log 20.1+0.3*log 20.3+0.2*log 20.2+0.05*log 20.05+0.25*log 20.25) =2.345 编码效率:
N
H
=
η=2.345/2.4=0.9771 b .B2码
平均码长:
=2*0.3+2*0.25+4*0.2+4*0.1+4*0.1+4*0.05=2.9 信息熵:
∑=-=j
i i i P P H 1
2log
= —(0.1*log 20.1+0.1*log 20.1+0.3*log 20.3+0.2*log 20.2+0.05*log 20.05+0.25*log 20.25)=2.345 编码效率:
N
H
=
η=2.345/2.9=0.8086
c .自然码
编码如下表:
平均码长:
=3*0.3+3*0.25+3*0.2+3*0.1+3*0.1+3*0.05=3 信息熵:
∑=-=j
i i i P P H 1
2log
= —(0.1*log 20.1+0.1*log 20.1+0.3*log 20.3+0.2*log 20.2+0.05*log 20.05+0.25*log 20.25)=2.345 编码效率: N
H =
η=2.345/3=0.7817
(2)对土星图像(saturn.tif)用余弦变换进行压缩
a .mask:10 命令:
I = imread(' saturn.tif'); %将图像变为双精度 I = im2double(I);
%形成一个8X8的余弦系数矩阵 T = dctmtx(8);
%用T 对每个8X8方阵进行余弦正变换,其变换计算为T*x*T’,式中 %x 代表8X8的方阵,T’是T 的转置矩阵 B = blkproc(I,[8 8],'P1*x*P2',T,T'); mask = [1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
%用mask 乘每个8X8的系数矩阵,即只保留左上角的10个系数 B2 = blkproc(B,[8 8],'P1.*x',mask); %作反变换,注意下式中的计算公式
I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);
imshow(I), figure, imshow(I2)
结果:
b.mask:6
命令只将mask改成:mask = [1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];其他命令不变。

结果:
c.mask:3
命令只将mask改成:mask = [1 1 0 00 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];其他命令不变。

结果:
d.mask:1
命令只将mask改成:mask = [1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];其他命令不变。

结果:
7.求右边的图像’checkerboard.tif’的共生矩阵(用默认值),再计算和画出offsets0 = [zeros(20,1) (1:20)']的纹理相关图,并分析此图的纹理规律。

注:要将此图先转为灰度图
答:命令和过程如下
(1) 形成灰度共生矩阵:
I=imread('checkerboard.tif');
imshow(I);
IG=rgb2gray(I);
imshow(IG)
glcms=graycomatrix(IG)
(2)计算和画出offsets0 = [zeros(20,1) (1:20)']的纹理相关图,并分析纹理规律分析:offsets0 = [zeros(20,1) (1:20)'];
glcms=graycomatrix(IG,'Offset',offsets0)
stats=graycoprops(glcms,'Contrast Correlation');
figure,plot([stats.Correlation]);
title('Texture Correlation as a function of offset');
xlabel('Horizontal Offset');
ylabel('Correlation')
图中可以看出纹理相关线近似一条斜直线,随着距离的增加,像元的相关值逐渐减小。

8.(1) 用命令形成下图,并用形态学方法提取下图的边缘(腐蚀和减法)。

写出命令,所用结构体及结果
BW =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(2) 用strel命令构建结构体,再用开运算和闭运算命令去除下图(bw.png)中的黑白噪声点。

显示结构体和所有命令过程并显示每一步的结果。

注:先对图像求反(用imcomplement命令),再构建结构体,去噪声后,再用求反命令还原。

答:(1)命令及过程如下:
a.形成题中所需图像:
BW = zeros(16,16);
BW(5:12,5:8) = 1;
BW(9:12,9:12) = ;
b.用形态学方法提取边缘:
se = strel ([0 1 0; 1 1 1; 0 1 0]);
edge = BW-imerode (BW,se)
结果如下:
(2)命令过程如下:
a.求反原图:
i=imread('bw.png');
imshow(i)
j=imcomplement(i);
figure,imshow(j);
求反后图像:
b.构建结构体并做开运算:
SE=strel('rectangle',[10,9])
I_opened = imopen(j,SE); figure,imshow(I_opened)
开运算后结果图:
c.构建结构体并做闭运算:se=strel('rectangle',[15,14])
I_closed = imclose(I_opened,se);
figure,imshow(I_closed)
闭运算后结果图:
d.最后再次求反,得最终结果,其命令和结果如下:
j=imcomplement(I_closed);
figure,imshow(j)
9.(1)将右图(j11b.jpg)中的飞机提取出来,如下图,并写出每一步的命令和结果。

(2)进行边界跟踪,提取飞机边界,并叠加在原图上。

注:要将彩色图像转为灰度图后建立标准差图(用stdfilt)再选适当阈值向二值转换,形态学处理,填孔数值变换,叠加等命令。

答:(1)提取飞机'j11b.jpg':
a.载入并显示图像j11b.jpg
I=imread('j11b.jpg');
imshow(I)
b.将RGB模式图像转换成灰度模式图像
IG = rgb2gray(I);
imshow (IG)
c.将灰度图转为二值图
IBW = im2bw(IG);
imshow(IBW)
d.对计算的二值图进行求反
IBWC=imcomplement(IBW);
imshow(IBWC)
e.闭运算(Imclose),去暗点和圆角。

SE = strel('disk', 7);
IPERI = imclose(IBWC,SE);
imshow(IPERI);
% Change data form
IPERI8 = im2uint8(IPERI);
% Complement binary image
c = imcomplement(IPERI8);
f.提取飞机轮廓:
IOUTLINE=imadd(IG,IPERIC);
imshow(IOUTLINE)
(2)进行边界跟踪,提取飞机边界,并叠加在原图上,这里在上小题的基础上进行操作:
a.提取飞机边界:
boundaries = bwboundaries(IPERIC);
BWj = bwperim(IPERIC);
figure, imshow(BWj);
b.边界跟踪:
boundary = bwboundaries(IPERI);
imshow(IG);
hold on;
for k = 1:length(boundary)
b = boundary{k};
plot(b(:,2),b(:,1),'r','LineWidth',3);
end
hold off;。

相关文档
最新文档