数字图像处理期末考试题Word文件下载.docx
- 文档编号:15311457
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:12
- 大小:74.17KB
数字图像处理期末考试题Word文件下载.docx
《数字图像处理期末考试题Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字图像处理期末考试题Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
均衡化后的直方图'
2、设一幅大小为M×
N的灰度图像I中,现要变成(放大或缩小)为P×
Q的图像J,请写出J的生成算法(可以使用近邻插值)。
I=imread('
f.jpg'
%读入图像
%图像属性
%Filename:
'
%FileModDate:
24-Aug-200816:
50:
30'
%FileSize:
20372
%Format:
jpg'
%FormatVersion:
'
%Width:
480
%Height:
640
%BitDepth:
8
%ColorType:
grayscale'
%FormatSignature:
%NumberOfSamples:
1
%CodingMethod:
Huffman'
%CodingProcess:
Sequential'
%Comment:
{}
[rows,cols]=size(I);
K1=str2double(inputdlg('
请输入行缩放倍数'
'
INPUTscalefactor'
1,{'
0.6'
}));
%行默认变为原来的0.6倍
K2=str2double(inputdlg('
请输入列缩放倍数'
0.4'
%列默认变为原来的0.4倍
width=K1*rows;
height=K2*cols;
im2=uint8(zeros(width,height));
%定义输出图像矩阵
widthScale=rows/width;
heightScale=cols/height;
forx=6:
width-6%为防止矩阵溢出而选择的参数6
fory=6:
height-6
oldX=x*widthScale;
%oldX,oldY为原坐标,x,y为新坐标
oldY=y*heightScale;
if(oldX/double(uint16(oldX))==1.0)&
(oldY/double(uint16(oldY))==1.0)
im2(x,y)=I(int16(oldX),int16(oldY));
else
a=double(round(oldX));
b=double(round(oldY));
%若不是整数四舍五入后把临近值赋过去
im2(x,y)=I(a,b);
end
end
imshow(I);
%输出原图像
figure;
imshow(im2);
%输出缩放后图像
3、设一幅大小为M×
N的灰度图像I中,现要将其逆时针旋转A度,得到图像J,请写出J的生成算法(可以使用近邻插值)。
%此题是用最近邻域法实现图像旋转
im1=imread('
b.jpg'
[m,n,p]=size(im1);
%将图像旋转30度
a=0.5;
%a=sin30=0.5
b=0.866;
%b=cos30=0.866
row=n*a+m*b;
col=n*b+m*a;
fori=1:
row%先把图象填充成全黑
forj=1:
col
im2(i,j,:
)=uint8(0);
end
m%把原图象像素点旋转后变为新图象点
n
xx=round(abs((i-m/2)*b-(j-n/2)*a+row/2));
yy=round(abs((i-m/2)*a+(j-n/2)*b+col/2));
fork=1:
3
im2(xx,yy,k)=im1(i,j,k);
temp1=uint8(0);
temp2=uint8(0);
temp3=uint8(0);
row%把画面上的空点按照最近邻插值法填充
temp1=uint8(0);
temp2=uint8(0);
temp3=uint8(0);
col%找到最右的图象边界点
if(im2(i,j,:
)==uint8(0))
else
kk=j;
kk
im2(i,j,1)=temp1;
im2(i,j,2)=temp2;
im2(i,j,3)=temp3;
temp1=im2(i,j,1);
temp2=im2(i,j,2);
temp3=im2(i,j,3);
imshow(im1);
imwrite(im1,'
5.jpg'
%保存原图像
imwrite(im2,'
6.jpg'
%保存旋转后图像
4、请写出生成(2N+1)×
(2N+1)大小的高斯模板H(方差为sigma)的方法。
5、请写出生成(2N+1)×
(2N+1)大小的高斯一阶导数模板HX(水平方向的梯度)、HY(垂直方向的梯度)(高斯的方差为sigma)的方法。
6、请写出使用大小为(2N+1)×
(2N+1)模板H对图像I进行滤波,生成图像J的方法。
7、请写出使用大小为3×
3的模板对图像I进行中值滤波,生成图像J的方法。
A=imread('
num22'
'
bmp'
subplot(1,2,1);
B=rgb2gray(A);
subimage(B);
处理前的图'
C=B;
xsize=size(B);
fork=2:
(xsize
(1)-1)
forj=2:
(xsize
(2)-1)
t=B(k-1:
k+1,j-1:
j+1);
C(k,j)=median(t(1:
9));
end
subplot(1,2,2);
subimage(C);
处理后的图'
8、请写出求Otsu阈值(即最大类间距准则)的计算方法。
试证明采用最大类间距准则计算出的阈值与采用最小类内距准则计算出的阈值相同。
9、设有一幅二值图像(元素取值为0或1),请生成该图像的标记图像。
(即第一个连通区域中的每一个白色像素的值都置为1,第二个连通区域中的每一个白色像素的值都置为2,依此类推。
区域编号可不考虑顺序)
clearall;
closeall;
img=imread('
liantong.bmp'
imgn=img>
128;
s=uint8(1-imgn);
%{
s=[00000000000000000;
0110011001100110;
%这个矩阵是维基百科中的矩阵
1111111100111100;
0011110001111000;
0111100011100110;
1110011000111000;
0110000011000110;
0000011110011110;
0000000000000000];
%}
imshow(mat2gray(s));
[mn]=size(s);
tmp=zeros(m,n);
%标记图像
label=1;
queue_head=1;
%队列头
queue_tail=1;
%队列尾
neighbour=[-1-1;
-10;
-11;
0-1;
01;
1-1;
10;
11];
%和当前像素坐标相加得到八个邻域坐标
fori=2:
m-1
n-1
ifs(i,j)==1&
&
tmp(i,j)==0
tmp(i,j)=label;
q{queue_tail}=[ij];
%用元组模拟队列,当前坐标入列
queue_tail=queue_tail+1;
whilequeue_head~=queue_tail
pix=q{queue_head};
8%8邻域搜索
pix1=pix+neighbour(k,:
ifpix1
(1)>
=2&
pix1
(1)<
=m-1&
pix1
(2)>
pix1
(2)<
=n-1
ifs(pix1
(1),pix1
(2))==1&
tmp(pix1
(1),pix1
(2))==0%如果当前像素邻域像素为1并且标记图像的这个邻域像素没有被标记,那么标记
tmp(pix1
(1),pix1
(2))=label;
q{queue_tail}=[pix1
(1)pix1
(2)];
queue_tail=queue_tail+1;
end
end
queue_head=queue_head+1;
clearq;
%清空队列,为新的标记做准备
label=label+1;
queue_head=1;
queue_tail=1;
10、设一幅二值图像中,只有一个白色区域,试给出求该区域外围轮廓线的方法(要求按顺时针的顺序给出各点的坐标,即行/列号)。
轮廓提取的算法很多,本题对于二值图像可以用一个简单的算法进行处理,首先遍历图像中的每一个像素点,查看该点像素值是否为白色像素点;
若是再查看该点周围8邻域像素点的灰度值之和为2040;
若是,则该点是内部点,输出图像相应位置置为黑色。
若不是,则输出该点的坐标信息。
11、设有一幅二值图像,采用3×
3的结构元(每个元素均为1)对其进行腐蚀操作,试写出得到结果图像的方法。
%A是处理的矩阵B是结构体,此题为3x3的元素均为1的结构体,用来对A进行扫描的
%实现的是简单的二值图像的处理灰度图像有待研究
%实现图像的腐蚀已完成未测试~
functionans=mimerode(A,B)
%初始化
[ha,wa]=size(A);
[hb,wb]=size(B);
origin=[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 期末 考试题