数字图像处理答案1.docx

上传人:b****8 文档编号:9848383 上传时间:2023-02-07 格式:DOCX 页数:17 大小:1.11MB
下载 相关 举报
数字图像处理答案1.docx_第1页
第1页 / 共17页
数字图像处理答案1.docx_第2页
第2页 / 共17页
数字图像处理答案1.docx_第3页
第3页 / 共17页
数字图像处理答案1.docx_第4页
第4页 / 共17页
数字图像处理答案1.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数字图像处理答案1.docx

《数字图像处理答案1.docx》由会员分享,可在线阅读,更多相关《数字图像处理答案1.docx(17页珍藏版)》请在冰豆网上搜索。

数字图像处理答案1.docx

数字图像处理答案1

实验名称:

图像信号的数字化

1、实验目的

通过本实验了解图像的数字化参数取样频率(像素个数)、量化级数与图像质量的关系。

2、实验内容

(1)编写并调试图像数字化程序。

要求参数K、N可调。

其中,K为亚抽样比例,N为量化比特数。

(2)可选择任意图像进行处理,在显示器上观察各种数字化参数组合下的图像效果。

本实验是对8bit的数字图像(将其近似看作连续图像)进行再取样和再量化。

3、实验方法及编程

用Matlab进行编程,主要是对照着实验书上面的算法流程图进行代码的编写,然后得到采样和量化之后的图像。

下面是编写的代码:

functionnewbuf=Sample_Quant(oldbuf,k,n)%

%*************************************************************************

%函数名称:

%Sample_Quant()图像数字化算法函数

%参数:

%oldbuf原图像数组

%MN原图像尺寸

%k取样间隔

%n量化比特值

%newbuf存放处理后的图像二维数组

%说明:

%在水平和垂直方向作1:

k取样,得到新的取样图像,再根据量化公式对每个像

%素分别取n比特量化,为了观察显示的需要,再按k:

1的比例将再取样的图像还原

%为原图像尺寸。

最后放入新的图像数组中并返回该数组。

%*************************************************************************

[M,N]=size(oldbuf);

oldbuf=double(oldbuf);

x=1;y=1;

whilex

whiley

new=(round(oldbuf(x,y)/(2^(8-n))))*(2^(8-n));

fori=0:

k-1

forj=0:

k-1

if(x+i

newbuf(x+i,y+j)=uint8(new);

end

end

end

y=y+k;

end

ify>=N

y=1;

end

x=x+k;

end

4、实验结果及分析(原图像和处理后的图像比较及分析)

图1.改变量化参数的结果图

图2.改变采样个数的结果图

图3.同时改变采样个数和量化参数的结果图

如上图所示,即为实验结果图像。

由图1可知,量化参数越小,图片越模糊;由图2可知,采样个数越少,图片越模糊;由图3可知,量化参数和采样个数对图片的模糊程度都有影响。

 

实验名称:

图像灰度级修正

3、实验目的

掌握常用的图像灰度级修正方法,即图像的灰度变换法和直方图均衡化法,加深对灰度直方图的理解。

观察图像的增强效果,对灰度级修正前后的图像加以比较。

4、实验内容

(1)编程实现图像的灰度变换。

改变图像输入、输出映射的灰度参数范围(拉伸和反比),观看图像处理结果。

(2)修改可选参数gamma值,使其大于1、等于1和小于1,观看图像处理结果。

(3)对图像直方图均衡化处理,显示均衡前后的直方图和图像。

实验图像选用hor256或vax256.

3、实验方法及编程

实验通过MATLAB进行编程实现,代码如下所示:

functionnewbuf=GrayTransf(oldbuf)

%*************************************************************************

%函数名称:

%GrayTransf()灰度变换函数

%参数:

%oldbuf原图像数组

%newbuf存放处理后的图像二维数组

%说明:

%可以任意指定输入图像需要映射的灰度范围和指定输出图像所在的灰度范围。

还可接受

%一个可选的参数来指定修正因素r。

%*************************************************************************

[M,N]=size(oldbuf);

newbuf=imadjust(oldbuf,stretchlim(oldbuf),[]);

newbuf=uint8(newbuf);

subplot(2,2,2);

imshow(newbuf);

subplot(2,2,3);

imhist(oldbuf);

subplot(2,2,4);

imhist(newbuf);

%-------------------------------------------------------------------------

functionnewbuf=GrayEqualize(oldbuf)

%*************************************************************************

%函数名称:

%GrayEqualize()直方图均衡算法函数

%参数:

%oldbuf原图像数组

%newbuf存放处理后的图像二维数组

%说明:

%对oldbuf的原图像数据进行灰度统计,然后计算每一个K所对应的S值,求出对照表

%S(k),最后以原图像灰度值K作为地址,对每一象素进行变换,得出均衡化以后的新图

%像存放在newbuf中。

%*************************************************************************

[M,N]=size(oldbuf);

NN=M*N;

sk=0;

[COUNTS,X]=imhist(oldbuf,256);

fori=1:

M

forj=1:

N

kk=double(oldbuf(i,j));

fork=1:

kk

sk=sk+COUNTS(k);

end

sk=sk/NN*256;

newbuf(i,j)=sk;

end

end

newbuf=uint8(newbuf);

subplot(2,2,2);

imshow(newbuf);

subplot(2,2,3);

imhist(oldbuf);

subplot(2,2,4);

imhist(newbuf);

%-------------------------------------------------------------------------

functionnewbuf=GrayGamma(oldbuf,r)

%*************************************************************************

%函数名称:

%GrayGamma()gamma校正函数

%参数:

%rgamma校正值

%oldbuf原图像数组

%newbuf存放处理后的图像二维数组

%说明:

%图像获取、打印和显示的各种装置是根据幂次规律进行响应的。

习惯上,幂次等式中的指

%数是指伽马值.用于修正幂次响应现象的过程称作伽马校正。

%imadjust()函数还可接受一个可选的参数来指定修正因素r(也称gamma校正值)。

根据

%r值的不同,输入图像与输出图像间的映射可能是非线性的。

%*************************************************************************

newbuf=imadjust(oldbuf,stretchlim(oldbuf),[],r);

newbuf=uint8(newbuf);

subplot(2,2,2);

imshow(newbuf);

subplot(2,2,3);

imhist(oldbuf);

subplot(2,2,4);

imhist(newbuf);

%标记抬头的代码:

str='改变r后的灰度变换图像';

imshow(newbuf);

title(str);

subplot(2,2,3);

str='原函数对应直方图';

imhist(oldbuf);

title(str);

subplot(2,2,4);

str='修正函数对应直方图';

imhist(newbuf);

title(str);

4、实验结果及分析(原图像和处理后的图像比较及分析)

图1.灰度变换法的图像

图2.gamma值小于1

图3.gamma值等于1

图4.gamma值大于1

图5.直方图均衡化的图像

如上图所示,即为所有的实验结果。

图1为灰度变换法之后的图像,对比可知变换之后的图像灰度值的范围变大,因此图像变得更加清晰,细节表现得更加明显。

图2、3和4是通过改变gamma值来观察图片的变化,当gamma值小于1的时候,原灰度值范围拉伸并向灰度值大的一方压缩,所以图片会整体偏白;当gamma值等于1的时候,原灰度值范围拉伸,效果同图1;当gamma值小于1的时候,原灰度值拉伸并向灰度值小的一方压缩,所以图片会整体偏黑。

图5为直方图均衡化之后的图像,新直方图的灰度值分布就更加均匀,图片也比较清晰。

 

实验名称:

图像的平滑滤波

5、实验目的

图像平滑主要目的是减少噪声对图像的影响。

噪声有很多种类,不同的噪声有不同的抑制措施。

本实验要求用平滑线性滤波和中值滤波两种最典型、最平常的处理算法进行程序设计,学习如何对已被噪声污染的图像进行“净化”。

通过平滑处理,对结果图像加以比较,得出自己的实验结论。

6、实验内容

(1)编写并调试窗口尺寸为m×n的平滑滤波函数。

(2)编写并调试窗口尺寸为m×n的中值滤波函数。

3、实验方法及编程

本实验用Matlab进行编程,具体的代码如下图所示:

functionnewbuf=AverageFilter(oldbuf,M,N,m)

%*************************************************************************

%函数名称:

%AverageFilter()均值滤波算法函数

%参数:

%oldbuf噪声图像数组

%MN噪声图像尺寸

%m矩形平滑窗口尺寸

%newbuf存放处理后的图像二维数组

%说明:

%用m*m的滤波器模板对oldbuf数组的噪声图像进行线性滤波,即用窗口内m*m个像素

%的平均灰度值来代替图像每个像素点的值,最后结果存放在newbuf数组中。

%*************************************************************************

oldbuf=double(oldbuf);

newbuf=zeros(M,N);

fori=(m+1)/2:

M-(m+1)/2

forj=(m+1)/2:

N-(m+1)/2

forx=-(m-1)/2:

(m-1)/2;

fory=-(m-1)/2:

(m-1)/2;

newbuf(i,j)=newbuf(i,j)+oldbuf(i+x,j+y)/(m*m);

end

end

end

end

%-------------------------------------------------------------------------

functionnewbuf=MedianFilter(oldbuf,M,N,m)

%*************************************************************************

%函数名称:

%MedianFilter()中值滤波算法函数

%参数:

%oldbuf原图像数组

%MN原图像尺度

%m滑动窗口尺寸

%newbuf存放处理后的图像数组

%说明:

%把oldbuf数组m*m窗口内的象素值赋给winbuf,然后调用排队函数SeekMid(),

%把该函数在窗口中找到的中值放到newbuf数组中。

%*************************************************************************

fori=(m+1)/2:

M-(m+1)/2

forj=(m+1)/2:

N-(m+1)/2

k=1;

forx=-(m-1)/2:

(m-1)/2;

fory=-(m-1)/2:

(m-1)/2;

winbuf(k)=oldbuf(i+x,j+y);

k=k+1;

end

end

newbuf(i,j)=SeekMid(winbuf,m);

end

end

%-------------------------------------------------------------------------

functionmid=SeekMid(winbuf,m)

%*************************************************************************

%函数名称:

%SeekMid()排序函数

%参数:

%winbuf滑动窗口

%m滑动窗口尺寸

%mid存放排序后中间位置的像素值

%说明:

%将winbuf窗口中的m*m个像素进行排序,将排序队列中间的像素值赋给变量mid。

%*************************************************************************

winsize=length(winbuf);%取窗口尺寸

fori=1:

winsize%编写排序函数

forj=1:

winsize-i

if(winbuf(i)>winbuf(j+i))

t=winbuf(i);

winbuf(i)=winbuf(j+i);

winbuf(j+i)=t;

end

end

end

mid=winbuf(ceil(m*m/2));%ceil函数朝正无穷大方向取整,总能取到中间位置

%-------------------------------------------------------------------------

4、实验结果及分析(原图像和处理后的图像比较及分析)

如上图所示,即为实验结果。

实验处理椒盐噪声的方法分为两种,均值滤波和中值滤波。

均值滤波能够消减椒盐噪声的干扰,但是同时模糊了图片,丢失细节;窗口越大,对椒盐噪声的处理能力越强,但是同时丢失的细节越多,图片会更加模糊。

中值滤波也能够较好的处理椒盐噪声,而且相较于均值滤波,效果更好,图片会更加清晰且没有明显的噪声痕迹;同均值滤波一样,窗口越大,图片越模糊。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1