内容发布更新时间 : 2024/12/23 7:12:51星期一 下面是文章的全部内容请认真阅读。
>> cdf=cumsum(hnorm); >> plot(x,cdf) >> axis([0 1 0 1]) >> set(gca,'xtick',0:.2:1) >> set(gca,'ytick',0:.2:1)
>> xlabel('input intensity values','fontsize',9) >> ylabel('输出亮度值','fontsize',9) >> text(0.2,0.5,'变换函数','fontsize',9)
实验3 图像复原
复原的目的是在预定义的意义上改善给定的图像。图像增强要紧是主观的处理,图像复原要紧是客观的处理,趋向于将退化模型化,并用相反的处理来复原原图像。
3.1 实验原理 3.1.1 噪声模型
(1)工具箱使用imnoise函数来污染一副图像,差不多语法为; g = imnoise (f, type, parameters)
其中,f是输入图像,该函数常见语法形式如下:
g = imnoise (f, ‘gaussian’, m, var)将均值为m,方差为var的高斯噪声加到图像f上。默认值为0,、方差为0.01的噪声。
g = imnoise (f, ‘localvar’, V)将均值为0、局部方差为V的高斯噪声添加到图像f上,其中V是与f大小相同的一个数组,它包含每个点的理想方差值。
g = imnoise (f, ‘locatlvar, image_intensity, var’)将均值为0的高斯噪声添加到图像f上,其中噪声的局部方差var是图像f的亮度值的函数。参量image_intensity必须包含在范畴[0,1]内的归一化亮度值,它与var是大小相同的向量。本函数绘制出噪声方差和图像亮度的函数关系。
g = imnoise (f, ‘salt & pepper’, d)用椒盐噪声污染图像f,其中d是噪声密度(即包含噪声值的图像区域的百分比)。因此,大约有d*numel(f)个像素受到阻碍,默认噪声密度为0.05。
g = imnoise (f, ‘speckle’, var)用方程g=f+n*f将乘法性质噪声添加到图像f上,其中n是均值为0、方差为var的平均分布的随机噪声。var默认为0.04。
g = imnoise (f, ‘poission’)从数据中生成泊松噪声,而不是将人工的噪声添加到数据中。为了遵守泊松统计,unit8类和uint16类图像的亮度必须和光子(或其他任何的量子信息)的数量相符合。当每个像素的光子数量大于65535(但必须小于1012)时,就要使用双精度图像。亮度值在0和1之间变化,同时对应于光子的数量除以1012。
(2)使用指定的分布产生空间随机噪声。空间噪声值是随机数,以概率密度函数(PDF)或相应的累积分布函数(CDF)表征。利用已有M文件“imnoise2.m”。
(3)周期噪声,一样产生于图像采集过程中的电气和/或电机干扰。利用已有M文件“imnoise3.m”完成实验。
(4)估量噪声参数。函数statmoments运算均值和n阶中心矩,并返回向量v。由于0阶矩阵总为1,1阶矩总为0,因此statmoments忽略这两个矩,语法形式如下:
[v, unv] = statmoments (p, n)
其中,p为直方图向量,n是运算的矩的数量。
噪声参数通常直截了当由带噪声的图像或一组带噪声的图像来估量。 在MATLAB中,使用函数roipoly来选择一个感爱好区域(ROI),语法为:
B = roipoly (f, c, r)
其中,f是我们感爱好的图像,c和r是多边形顶点的相应列坐标和行坐标,输出的B是一个二值图像,它是一个与f大小相同且在感爱好区域外为0、在感爱好去野外为1的二值图像,它是一个用来限制在感爱好区域内的掩模。
交互式指定一个多边形的ROI,能够使用下面的语法: B = roipoly(f)
该函数功能是把图像f显示到屏幕上,让用户使用鼠标来指定多边形。 参见“histroi.m“文件。 3.1.2 噪声的复原:空间滤波
(1)空间噪声滤波器。使用“spfilt.m“文件。
函数imlincomb的用途是运算输入的线性组合,语法为: B = imlincomb (c1, A1, c2, A2,……, ck, Ak) 它实现等式:
B = c1* A1 + c2* A2,……, + ck* Ak
其中,c是double类实标量,A是有着相同类和大小的数组。
(2)自适应空间滤波器。能够利用adpmedian的M函数来实现,语法为:
f = adpmedian (g, Smax)
其中,g是将被滤波的图像,Smax是承诺的最大自适应滤波器窗口的大小。
3.1.3 退化函数建模
(1)退化函数建模。图像模糊是导致图像退化的重要缘故,能够在图像猎取时传感器和场景之间的平均线性运动而产生的图像模糊。能够利用fspecial对图像模糊建模:
PSF = fspecial (‘motion’, len, theta)
调用fspecial 将返回PSF,它近似于有着len个像素的摄像机的线性移动成效,参数theta以度为单位,以顺时针方向正对水平轴度量。len默认值是9,theta默认值是0。
函数checkerboard用于产生测试图像,语法为: C = checkerboard (NP, M, N)
其中,NP是每个正方形一边的像素数,M是行数,N是列数,若M和N都省略,将产生一个一面为8个正方形的正方形测试板。
M函数piexldup 通过像素来放大图像,语法为: B = piexldup (A, m, n)
该函数将A上的每个像素在垂直方向上总共复制n次。 3.1.4 维纳滤波
(1)维纳滤波使用deconvwnr函数来实现,有三种语法形式: fr = deconvwnr (g, PSF)
fr = deconvwnr (g, PSF, NSPR)
fr = deconvwnr (g, PSF,NACORR, FACORR)
其中,g代表退化图像,fr是复原图像,PSF是噪信比(或是个常量或是个数组),NSPR能够是一个交互的标量输入,NACORR和FACORR是噪声和未退化图像的自有关函数。
3.1.5 约束最小乘方(正则)滤波
(1)约束最小乘方(正则)滤波使用函数deconverg来实现,语法为: fr = deconverg (g, PSF, NOISEPOWER, RANGE)
其中,g是被污染的图像,fr是复原图像,NOISEPOWER与 成比例,RANGE为值的范畴。
3.1.5 使用Lucy-Richardson复原的迭代非线性复原
(1)Lucy-Richardson复原的迭代非线性复原利用deconvlucy函数来实现,语法为:
fr = deconvlucy (g, PSF, NUMIT, DAMPAR, WEIGHT)
其中,g是退化的图像,fr是复原图像,,PSF是点扩散函数,NUMIT为迭代的次数(默认10次)。
DAMPAR是一个标量,它指定了结果图像与原图像g之间的偏离阈值,当像素值偏离原值的范畴并在DAMPAR之内时,就不用迭代。如此能够抑制这些像素的噪声,有储存了必要的图像细节,默认值为0(无衰减)。
WEIGHT是一个与g相同大小的数组,它为每一个像素分配一个权重来反映其重量。例如从某个有缺陷的成像数组 得出一个不良像素,最终会被赋以权重值零,从而排除该像素去求解。
3.1.5 盲去卷积
(1)盲去卷积通过函数deconvblind来实现,其语法为: [f, PSFe] = deconvblind (g, INITPSF)
其中,g是退化的图像,INITPSF是点扩散函数的初步估量,PSFe是那个函数最终运算得到的估量值,fr是用估量的PSF复原的图像。迭代默认10次。
3.1.6 几何变换与图像配准
(1)空间几何变换。IPT利用一个所谓的tform结构来表示空间变换,通过函数maketform来实现,语法为:
tform = maketform (transform_type, transform_parameters)
transform_type是下列字符串之一:‘affine’, ‘projective’, ‘box’, ‘composite’或‘custom’。