冈萨雷斯《数字图像处理matlab版》(四):图像复原与重建

退化过程可模拟为一个退化函数和加性噪声项。g(x,y)=H[f(x,y)]+n(x,y)

G(u,v)=H(u,v)*f(u,v)+N(u,v)   做卷积

噪声模型: g=imnoise(f,type,parameters)

g=imnoise(f,'gaussian',m,var)将均值m,方差为var的高斯噪声加到图像f上,默认值是均值m为0,方差var为0.01的噪声。

g=imnoise(f,'localvar',V)将均值为0,局部方差为V的高斯噪声添加到图像f上,其中V是与f大小相同的一个数组,它包含了每一个点的理想方差值。

g=imnoise(f,'localvar',image_intensity,var)将均值为0的高斯噪声添加到图像f中,其中噪声的局部方差var是图像f的亮度值的函数。参量image_intensity和var是大小相同的向量,plot(image_intensity,var)绘制出噪声方差和图像亮度的函数关系。向量image_intensity必须包含范围在[0,1]内的归一化亮度值。

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,'poisson')从数据中生成泊松噪声,而不是将人工的噪声添加到数据中,为了遵守泊松统计,unit8和unit16类图像的亮度必须和光子的数量相符合。当每个像素的光子数量大于65535时,就要使用双精度图像。亮度值在0到1之间变化,并且对应于光子的数量除以10e12。

 

 

 

在使用前

1. 要把f—>double类

2. 噪声的均值和方差要归一化,例如m=64,var=100 --àm=64/255  var= 100/255^2

rand  randn  都是0到1内的数,后者是高斯分布。

rand(M,N)产生随机数组,rand()产生一个随机数。

[r,c,v]=find(A)返回A中非零元素的行索引和列索引(r c)和非零元素(v向量)

如果出现的退化仅仅是噪声,即g(x,y)=f(x,y)+n(x,y) ,我们所使用的降噪方法是空间滤波去除噪声。(例如椒盐噪声可以采用中值滤波)

过滤黑胡椒噪声: Q为正值的逆调和滤波器。  过滤盐粒噪声:  Q为负值的逆调和滤波器。

g=spfilt(f,’chmean’,3,3,Q)

 

自适应空间滤波器:能够根据被滤波的图像区域的特性改进滤波结果。冈萨雷斯附录中有adpmedian()函数实现自适应中值滤波。

g=adpmedian(f,Smax)

Smax是自适应滤波器窗口的最大允许尺寸。

如果出现的退化存在退化函数,最简方法是忽略噪声项,形成:

(u,v)= 称为逆滤波。

适用情形:

计算出未退化前的图像。

 

逆滤波方式有:

维纳滤波(有三种语法 )

 J=deconvwnr(I,PSF)

J=deconvwnr(I,PSF,NSR)

J=deconvwnr(I,PSF,NCORR,ICORR)

其中

I是退化的图像,是原图像卷积PSF然后加上加性噪声而得到的。

NSR是噪声信号功率比,可以为一标量,也可以为与I同样大小的矩阵,默认值为0.

NCORR和ICORR分别是信号和原图像的自相关函数

J是返回的复原图像。

 

给定一组一维投影和这些投影所取的角度,由生成的投影来重建该区域的一幅图像。

滤波投影重建图像:

1、计算每个投影的一维傅里叶变换

2、用滤波函数|w|乘以每一个傅里叶变换。每个滤波器必须乘以一个合适的窗函数。

3、对滤波后的结果做一维傅里叶反变换。

4、对第三步得到的所有一维反变换的结果积分(求和),得到f(x,y)。

 

适用一个窗函数乘以斜坡滤波器,可以使滤波器的拖尾逐渐消失,从而在高频处降低幅度。常见的窗函数包括:正弦窗、余弦窗、汉明窗和汉宁窗。

(一)  矩形窗(Rectangle Window),调用格式:w=boxcar(n),根据长度n产生一个矩形窗w。 
(二) 三角窗(Triangular Window),调用格式:w=triang(n),根据长度n产生一个三角窗w。 
(三) 汉宁窗(Hanning Window),调用格式:w=hanning(n),根据长度n产生一个汉宁窗w。 
(四) 海明窗(Hamming Window),调用格式:w=hamming(n),根据长度n产生一个海明窗w。 
(五) 布拉克曼窗(Blackman Window),调用格式:w=blackman(n),根据长度n产生一个布拉克曼窗w。 
(六) 恺撒窗(Kaiser Window),调用格式:w=kaiser(n,beta),根据长度n和影响窗函数旁瓣的β参数产生一个恺撒窗w。

 

图像生成投影:

 

函数radon用来对给定的二维矩形数组生成一组平行射线投影。

[R,xp]=radon(I,theta)  I是一个二维数组(图像),theta是角度值的一维数组,投影包含在R的列内,生成的投影数等于角度数。

Xp即rough值。

 

投影重建图像:

Iradon由给定的以不同角度得到的一组投影重建一幅图像(切片)。

I=iradon(R,theta,interp,filter,frequency_scaling,output_size)

R是投影矩阵。

theta可以是一个包含所有扫描角度的向量,这时每两个相邻角度间隔相等;也可以是一个标量值,等于相邻两个扫描角度的间隔。

interp是插值函数,有以下几种差值方式可以选择:

nearest:最邻近插值方法(nearestneighbor interpolation)。这种插值方法在已知数据的最邻近点设置插值点,对插值点的数值进行四舍五入,对超出范围的数据点返回NaN。

linear:线性插值(linearinterpolation),这是interp中的默认数值。该方法采用直线将相邻的数据点相连,对超出数据范围的数据点返回NaN。

spline:三次样条插值(cubic splineinterpolation),该方法采用三次样条函数获取插值数据点,在已知点为端点的情况下,插值函数至少具有相同的一阶和二阶导数。

pchip:分段三次厄米多项式差值(piecewisecubic Hermite interpolation)。

cubic:三次多项式插值,与分段三次厄米多项式插值方法相同。

v5cubic:MATLAB5中使用的三次多项式插值。



方法                                                             说明

nearest     最快的插值方法,但是数据平滑方面最差,数据是不连续的。

linear       执行速度较快,有足够的精度,最为常用,而且为默认设置。

cubic      较慢,精度高,平滑度好,当希望得到平滑的曲线时可以使用该选项。

spline      执行速度最慢,精度高,最平滑。

filter是滤波函数,有以下几种滤波器可以选择:

‘Ram-Lak’——频带有限的斜坡函数滤波器,是MATLAB默认的滤波器,对投影中的噪声敏感( R-L滤波函数和S-L滤波函数)。

‘Shepp-Logan’——sinc函数*R-L函数。

‘Cosine’——cosine函数*R-L函数 。

‘Hamming’——Hamming函数*R-L函数 。

‘Hann’——hann函数*R-L函数 。

‘None’——没有滤波。

frequency_scaling是一个标量值,取值范围[0,1],通过缩放滤波函数的频率修改滤波函数。

默认值为1。如果取值小于1,则滤波函数的频率被压缩到适合[0,frequency_scaling]的范围。比如默认值为1时,滤波函数的窗口为[0,10Hz],frequency_scaling=0.5时,滤波函数的窗口为[0,20Hz]。(待确定)在频域中,频率若大于frequency_scaling对应的频率,则该频率处的函数值为0。

output_size是一个标量,用来规定重建图像的行数和列数。

默认等于2*floor(size(R,1)/(2*sqrt(2)))。改变output_size会改变重建图像的大小,但是不会改变像素点的个数。

 

处理扇形射线束数据:

产生的投影与平行射线束产生的投影不同,基本思路是把扇形射线束转换为平行射线束,然后使用前面的平行射线束方法得到反投影。

由图像产生投影:

B=fanbeam(f,D,parameter)   f是包含即将被投影的物体的图像,D是扇形射线束的顶点到旋转中心的距离。

I=ifanbeam(B,D,parameter..)

B是扇形射线束投影矩阵,D是扇形射线束的顶点到旋转中心的距离。

 

把扇形射线束投影转换为平行投影:

P=fan2para(F,D,parameter)   F是数组,它的列是扇形射线束投影。D是扇形射线束的顶点到旋转中心的距离。

 

把平行射线束投影转换为扇形投影:

F=para2fan(P,D,parameter)   P是数组,它的列是平行射线束投影。D是扇形射线束的顶点到旋转中心的距离。

你可能感兴趣的:(图像处理)