数字图像处理期末考试题_第1页
数字图像处理期末考试题_第2页
数字图像处理期末考试题_第3页
数字图像处理期末考试题_第4页
数字图像处理期末考试题_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字图像处理技术与应用练习题说明:不允许直接使用MATLAB(或者OPENCV等等软件)所带的图像图像函数,重点考察大家是否理解了各种处理算法,算法可用伪代码描述。算法应较详细。1、 设一幅大小为MN的灰度图像I中,灰度为g的像素数为h(g), 。 请写出对图像I进行直方图均衡化,得到图像J的计算方法。clc;clear;I= imread(a.jpg);I= rgb2gray(I) ; %将图像转换为灰度图像J= histeq( I) ; %对I 进行直方图均衡化subplot( 121) ,imshow(I) ,title(原始图像) ;subplot (122), imshow(J),

2、title(直方图均衡化后的图像);figure( 2) ;subplot( 121) ,imhist(I, 64), title( 原始的直方图);subplot( 122) ,imhist(J,64) ,title( 均衡化后的直方图);2、 设一幅大小为MN的灰度图像I中,现要变成(放大或缩小)为 PQ的图像J,请写出J的生成算法(可以使用近邻插值)。I=imread(f.jpg);%读入图像%图像属性% Filename: f.jpg% FileModDate: 24-Aug-2008 16:50:30% FileSize: 20372% Format: jpg% FormatVers

3、ion: % Width: 480% Height: 640% BitDepth: 8% ColorType: grayscale% FormatSignature: % NumberOfSamples: 1% CodingMethod: Huffman% CodingProcess: Sequential% Comment: rows,cols=size(I);K1 = str2double(inputdlg(请输入行缩放倍数, INPUT scale factor, 1, 0.6);%行默认变为原来的0.6倍K2 = str2double(inputdlg(请输入列缩放倍数, INPUT

4、scale factor, 1, 0.4);%列默认变为原来的0.4倍width = K1 * rows; height = K2 * cols;im2 = uint8(zeros(width,height); %定义输出图像矩阵widthScale = rows/width;heightScale = cols/height;for x = 6:width - 6 %为防止矩阵溢出而选择的参数6 for y = 6:height - 6 oldX = x * widthScale; %oldX,oldY为原坐标,x,y为新坐标 oldY = y * heightScale; if (oldX

5、/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 endendimshow(I); %输出原图像figure;imshow(im2); %输出缩放后图像3、 设一幅大小为MN的灰度图像I中,现要将其逆时针旋转 A度,得到图像J,请写出J的生成算法(可以使用近

6、邻插值)。clear;%此题是用最近邻域法实现图像旋转im1=imread(b.jpg);m,n,p=size(im1);% 将图像旋转30度a=0.5; %a=sin30=0.5b=0.866; %b=cos30=0.866row=n*a+m*b;col=n*b+m*a;for i=1:row %先把图象填充成全黑 for j=1:col im2(i,j,:)=uint8(0); endend for i=1:m %把原图象像素点旋转后变为新图象点 for j=1:n xx=round(abs(i-m/2)*b-(j-n/2)*a+row/2); yy=round(abs(i-m/2)*a+

7、(j-n/2)*b+col/2); for k=1:3 im2(xx,yy,k)=im1(i,j,k); end endendtemp1=uint8(0);temp2=uint8(0);temp3=uint8(0);for i=1:row %把画面上的空点按照最近邻插值法填充 temp1=uint8(0); temp2=uint8(0); temp3=uint8(0); for j=1:col %找到最右的图象边界点 if (im2(i,j,:)=uint8(0) else kk=j; end end for j=1:kk if (im2(i,j,:)=uint8(0) im2(i,j,1)=

8、temp1; im2(i,j,2)=temp2; im2(i,j,3)=temp3; else temp1=im2(i,j,1); temp2=im2(i,j,2); temp3=im2(i,j,3); end endend imshow(im1);figure;imwrite(im1,5.jpg); %保存原图像imshow(im2);imwrite(im2,6.jpg);%保存旋转后图像4、 请写出生成 (2N+1)(2N+1)大小的高斯模板H(方差为sigma)的方法。5、 请写出生成 (2N+1)(2N+1)大小的高斯一阶导数模板HX(水平方向的梯度)、HY(垂直方向的梯度)(高斯的方

9、差为sigma)的方法。6、请写出使用大小为(2N+1)(2N+1)模板H对图像I进行滤波,生成图像J的方法。7、请写出使用大小为33的模板对图像I进行中值滤波,生成图像J的方法。clear; A=imread(num22,bmp); subplot(1,2,1); B=rgb2gray(A); subimage(B); title(处理前的图); C=B; xsize=size(B); for k=2:(xsize(1)-1) for j=2:(xsize(2)-1) t=B(k-1:k+1,j-1:j+1); C(k,j)=median(t(1:9); end end subplot(1,

10、2,2); subimage(C); title(处理后的图);8、 请写出求 Otsu阈值(即最大类间距准则)的计算方法。 试证明采用最大类间距准则计算出的阈值与采用最小类内距准则计算出的阈值相同。9、 设有一幅二值图像(元素取值为0或1),请生成该图像的标记图像。(即第一个连通区域中的每一个白色像素的值都置为1,第二个连通区域中的每一个白色像素的值都置为2,依此类推。区域编号可不考虑顺序)clear all;close all;clc;img=imread(liantong.bmp);imgn=img128;s=uint8(1-imgn); % s=0 0 0 0 0 0 0 0 0 0

11、0 0 0 0 0 0 0;0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0; %这个矩阵是维基百科中的矩阵1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0;0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0;0 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0;1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 0;0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0;0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;%imshow(mat2gra

12、y(s);m n=size(s);tmp=zeros(m,n); %标记图像label=1;queue_head=1; %队列头queue_tail=1; %队列尾neighbour=-1 -1;-1 0;-1 1;0 -1;0 1;1 -1;1 0;1 1; %和当前像素坐标相加得到八个邻域坐标for i=2:m-1 for j=2:n-1 if s(i,j)=1 & tmp(i,j) =0 tmp(i,j)=label; qqueue_tail=i j; %用元组模拟队列,当前坐标入列 queue_tail=queue_tail+1; while queue_head=queue_tail

13、 pix=qqueue_head; for k=1:8 %8邻域搜索 pix1=pix+neighbour(k,:); if pix1(1)=2 & pix1(1)=2 &pix1(2)=n-1 if s(pix1(1),pix1(2) = 1 & tmp(pix1(1),pix1(2) =0 %如果当前像素邻域像素为1并且标记图像的这个邻域像素没有被标记,那么标记 tmp(pix1(1),pix1(2)=label; qqueue_tail=pix1(1) pix1(2); queue_tail=queue_tail+1; end end end queue_head=queue_head+

14、1; end clear q; %清空队列,为新的标记做准备 label=label+1; queue_head=1; queue_tail=1; end endend10、设一幅二值图像中,只有一个白色区域,试给出求该区域外围轮廓线的方法(要求按顺时针的顺序给出各点的坐标,即行/列号)。 轮廓提取的算法很多,本题对于二值图像可以用一个简单的算法进行处理,首先遍历图像中的每一个像素点,查看该点像素值是否为白色像素点;若是再查看该点周围8邻域像素点的灰度值之和为2040;若是,则该点是内部点,输出图像相应位置置为黑色。若不是,则输出该点的坐标信息。 11、设有一幅二值图像,采用 33的结构元(每

15、个元素均为1)对其进行腐蚀操作,试写出得到结果图像的方法。 %A是处理的矩阵 B是结构体,此题为3x3的元素均为1的结构体, 用来对A进行扫描的%实现的是简单的二值图像的处理灰度图像有待研究%实现图像的腐蚀已完成 未测试 function ans =mimerode(A,B) %初始化ha,wa =size(A);hb,wb =size(B);origin =0,0;ans =zeros(ha,wa); for i = 1:hb for j = 1:wb if (B(i,j)= 1) origin = i,j; break; end endend %对矩阵A进行边扩张 以0补充new_A =z

16、eros(ha+hb*2,wa+wb*2);for i = 1:ha for j = 1:wa new_A(i+hb,j+wb) = A(i,j); endend %对矩阵A进行遍历for i = 1:ha for j = 1:wa if A(i,j) = 0 continue; end %把B的origin点移到当前处理点 %寻找B的影响区域块 begin_i = i + hb - origin(1); begin_j = j + wb - origin(2); %对矩阵new_A中和重合的B中的元素对比 for i1 =begin_i:begin_i+hb-1 for j1 =begin_

17、j:begin_j+wb-1 flag = true; if (B(i1-begin_i+1,j1-begin_j+1)= 1 & new_A(i1,j1) = 0) flag = false break; end end end if flag ans(i,j) = 1; else ans(i,j) = 0; end endend12、写出二维离散傅立叶变换、反变换的计算公式,给出基于频域滤波的基本步骤。 二维离散傅里叶变换公式:假设以正方形网格采样得到的图像用f(x,y)来表示,其大小为N行M列,则f(x,y)的二维离散傅里叶变换可以表示为: Fu,v=x=0M-1y=0N-1fx,ye-

18、j2(uxM+vyN), u=0,1,M-1, v=0,1,N-1其反变换为:fx,y= 1MNu=0M-1v=0N-1Fu,ve-j2(uxM+vyN), x=0,1,M-1, y=0,1,N-1基于频域滤波的基本步骤:(1) 用(-1)x+y乘以图像来进行中心变换(2) 由(1)计算图像的DFT(离散傅里叶变换),即F(u,v)(3) 用滤波器函数H(u,v)乘以F(u,v)(4) 计算(3)中结果的反DFT(5) 得到(4)中结果的实部(6) 用(-1)x+y乘以(5)中的结果13. 请写出C 均值(K-means)聚类分割的基本步骤。14. 请写出Canny算子检测边缘的详细步骤。算法过程1高斯函数 2偏导数:使用微分算子求出偏导数 3非极大值抑制: 沿幅角方向检测模值的极大值点,即边缘点,遍历8个方向图像像素,把每个像素偏导值与相邻像素的模值比较,取其MAX值为边缘点,置像素灰度值为0.3双阈值检测: 由于单阈值处理时,合适的阈值选择较 困难,常常需要采用反复试验,因此采用双阈值检测算法。 对经过非极大值抑制后的图像作用两个阈值th1,th2,th1=0.4th2,两个阈值作用后得到两个图像1、2,较大阈值检测出的图像2去除了大部分噪声,但是也损失了有用的边缘信息。较小阈值检测得到的图像1则保留着较多的边缘信息,以此为基础,补充图像2中的丢

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论