图像增强
1. 直方图均衡化的 Matlab 实现
1.1 imhist 函数
功能:计算和显示图像的色彩直方图 格式:imhist(I,n) imhist(X,map)
说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X,map) 就算和显示索引色图像 X 的直方图,map 为调色板。用 stem(x,counts) 同样可以显示直方图。
1.2 imcontour 函数 功能:显示图像的等灰度值图
格式:imcontour(I,n),imcontour(I,v)
说明:n 为灰度级的个数,v 是有用户指定所选的等灰度级向量。
1.3 imadjust 函数
功能:通过直方图变换调整对比度
格式:J=imadjust(I,[low high],[bottom top],gamma)
newmap=imadjust(map,[low high],[bottom top],gamma)
说明:J=imadjust(I,[low high],[bottom top],gamma) 其中,gamma 为校正量r,[low high] 为原图像中要变换的灰度范围,[bottom top] 指定了变换后的灰度范围;
newmap=imadjust(map,[low high],[bottom top],gamma) 调整索引色图像的调色板 map 。此时若 [low high] 和 [bottom top] 都为2×3的矩阵,则分别调整 R、G、B 3个分量。
1.4 histeq 函数 功能:直方图均衡化 格式:J=histeq(I,hgram) J=histeq(I,n) [J,T]=histeq(I,...)
Zhiku.jiaking.com
newmap=histeq(X,map,hgram) newmap=histeq(X,map) [new,T]=histeq(X,...)
说明:J=histeq(I,hgram) 实现了所谓“直方图规定化”,即将原是图象 I 的直方图变换成用户指定的向量 hgram 。hgram 中的每一个元素都在 [0,1] 中;J=histeq(I,n) 指定均衡化后的灰度级数 n ,缺省值为 64;[J,T]=histeq(I,...) 返回从能将图像 I 的灰度直方图变换成图像 J 的直方图的变换 T ;newmap=histeq(X,map) 和 [new,T]=histeq(X,...) 是针对索引色图像调色板的直方图均衡。
2. 噪声及其噪声的 Matlab 实现 imnoise 函数 格式:J=imnoise(I,type)
J=imnoise(I,type,parameter)
说明:J=imnoise(I,type) 返回对图像 I 添加典型噪声后的有噪图像 J ,参数 type 和 parameter 用于确定噪声的类型和相应的参数。
3. 图像滤波的 Matlab 实现
3.1 conv2 函数 功能:计算二维卷积 格式:C=conv2(A,B)
C=conv2(Hcol,Hrow,A) C=conv2(...,'shape')
说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:
》full 为缺省值,返回二维卷积的全部结果;
》same 返回二维卷积结果中与 A 大小相同的中间部分;
Zhiku.jiaking.com
valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。
3.2 conv 函数 功能:计算多维卷积 格式:与 conv2 函数相同
3.3 filter2函数
功能:计算二维线型数字滤波,它与函数 fspecial 连用 格式:Y=filter2(B,X)
Y=filter2(B,X,'shape')
说明:对于 Y=filter2(B,X) ,filter2 使用矩阵 B 中的二维 FIR 滤波器对数据 X 进行滤波,结果 Y 是通过二维互相关计算出来的,其大小与 X 一样;对于
Y=filter2(B,X,'shape') ,filter2 返回的 Y 是通过二维互相关计算出来的,其大小由参数 shape 确定,其取值如下:
》full 返回二维相关的全部结果,size(Y)>size(X); 》same 返回二维互相关结果的中间部分,Y 与 X 大小相同;
》valid 返回在二维互相关过程中,未使用边缘补 0 部分进行计算的结果部分,有 size(Y) 3.4 fspecial 函数 功能:产生预定义滤波器 格式:H=fspecial(type) H=fspecial('gaussian',n,sigma) 高斯低通滤波器 H=fspecial('sobel') Sobel 水平边缘增强滤波器 H=fspecial('prewitt') Prewitt 水平边缘增强滤波器 H=fspecial('laplacian',alpha) 近似二维拉普拉斯运算滤波器 Zhiku.jiaking.com H=fspecial('log',n,sigma) 高斯拉普拉斯(LoG)运算滤波器 H=fspecial('average',n) 均值滤波器 H=fspecial('unsharp',alpha) 模糊对比增强滤波器 说明:对于形式 H=fspecial(type) ,fspecial 函数产生一个由 type 指定的二维滤波器 H ,返回的 H 常与其它滤波器搭配使用。 4. 彩色增强的 Matlab 实现 4.1 imfilter函数 功能:真彩色增强 格式:B=imfilter(A,h) 说明:将原始图像 A 按指定的滤波器 h 进行滤波增强处理,增强后的图像 B 与 A 的尺寸和类型相同。 图像的变换 1. 离散傅立叶变换的 Matlab 实现 Matlab 函数 fft、fft2 和 fftn 分别可以实现一维、二维和 N 维 DFT 算法;而函数 ifft、ifft2 和 ifftn 则用来计算反 DFT 。这些函数的调用格式如下: A=fft(X,N,DIM) 其中,X 表示输入图像;N 表示采样间隔点,如果 X 小于该数值,那么 Matlab 将会对 X 进行零填充,否则将进行截取,使之长度为 N ;DIM 表示要进行离散傅立叶变换。 A=fft2(X,MROWS,NCOLS) 其中,MROWS 和 NCOLS 指定对 X 进行零填充后的 X 大小。 A=fftn(X,SIZE) 其中,SIZE 是一个向量,它们每一个元素都将指定 X 相应维进行零填充后的长度。 函数 ifft、ifft2 和 ifftn的调用格式于对应的离散傅立叶变换函数一致。 例子:图像的二维傅立叶频谱 Zhiku.jiaking.com % 读入原始图像 I=imread('lena.bmp'); imshow(I) % 求离散傅立叶频谱 J=fftshift(fft2(I)); figure; imshow(log(abs(J)),[8,10]) 2. 离散余弦变换的 Matlab 实现 2.1. dct2 函数 功能:二维 DCT 变换 格式:B=dct2(A) B=dct2(A,m,n) B=dct2(A,[m,n]) 说明:B=dct2(A) 计算 A 的 DCT 变换 B ,A 与 B 的大小相同;B=dct2(A,m,n) 和 B=dct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为 m×n。 2.2. dict2 函数 功能:DCT 反变换 格式:B=idct2(A) B=idct2(A,m,n) B=idct2(A,[m,n]) 说明:B=idct2(A) 计算 A 的 DCT 反变换 B ,A 与 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为 m×n。 2.3. dctmtx函数 功能:计算 DCT 变换矩阵 格式:D=dctmtx(n) Zhiku.jiaking.com