作者:陈若愚
日期:2020年2月28日
QQ:2389388826
本文为整理网上资源,如有侵权请联系作者删除
[X,map]=imread('trees.tif');
gmap=rgb2gray(map);
figure,imshow(X,map);
figure,imshow(X,gmap);
I = imread('football.jpg');
se = translate(strel(1), [30 30]); %将一个平面结构化元素分别向下和向右移动30个位置
J = imdilate(I,se); %利用膨胀函数平移图像
subplot(121);
imshow(I), title('原图')
subplot(122), imshow(J), title('移动后的图像');
I = imread('cameraman.tif');
Flip1=fliplr(I); % 对矩阵I左右反转
subplot(131);imshow(I);
title('原图');
subplot(132);imshow(Flip1);
title('水平镜像');
Flip2=flipud(I); % 对矩阵I垂直反转
subplot(133);
imshow(Flip2);
title('竖直镜像');
I=imread('cameraman.tif');
B=imrotate(I,60,'bilinear','crop');
%双线性插值法旋转图像,并裁剪图像,使其和原图像大小一致
subplot(121),imshow(I),title('原图');
subplot(122),imshow(B),title('旋转图像60^{o},并剪切图像');
I = imread('circuit.tif');
I2 = imcrop(I,[75 68 130 112]);
imshow(I), figure, imshow(I2)
I=imread('circuit.tif');
imshow(I)
figure
imcontour(I,3)
I=imread('cameraman.tif');
J=imnoise(I,'salt & pepper',0.02); %添加椒盐噪声
subplot(121),imshow(J);
title('噪声图像')
K=medfilt2(J); %使用3*3的邻域窗的中值滤波
subplot(122),imshow(K);title('中值滤波后图像')
① fft2:fft2函数用于数字数字图像的二维傅立叶变换,如:
i=imread('104_8.tif');
j=fft2(i);
②ifft2::ifft2函数用于数字数字图像的二维傅立叶反变换,如:
i=imread('104_8.tif');
j=fft2(i);
k=ifft2(j);
① imnoise:用于对数字数字图像生成模拟噪声,如:
i=imread('104_8.tif');
j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声
② fspecial:用于产生预定义滤波器,如:
h=fspecial('sobel');%sobel水平边缘增强滤波器
h=fspecial('gaussian');%高斯低通滤波器
h=fspecial('laplacian');%拉普拉斯滤波器
h=fspecial('log');%高斯拉普拉斯(LoG)滤波器
h=fspecial('average');%均值滤波器
①直方图:imhist函数用于数字数字图像的直方图显示,如:
i=imread('104_8.tif');
imhist(i);
②直方图均化:histeq函数用于数字数字图像的直方图均化,如:
i=imread('104_8.tif');
j=histeq(i);
imshow(J)
③对比度调整:imadjust函数用于数字数字图像的对比度调整,如:
i=imread('104_8.tif');
j=imadjust(i,[0.3,0.7],[]);
④对数变换:log函数用于数字数字图像的对数变换,如:
i=imread('104_8.tif');
j=double(i);
k=log(j);
⑤基于卷积的数字数字图像滤波函数:filter2函数用于数字数字图像滤波,如:
i=imread('104_8.tif');
h=[1,2,1;0,0,0;-1,-2,-1];
j=filter2(h,i);
⑥线性滤波:利用二维卷积conv2滤波, 如:
i=imread('104_8.tif');
h=[1,1,1;1,1,1;1,1,1];
h=h/9;
j=conv2(i,h);
⑦中值滤波:medfilt2函数用于数字数字图像的中值滤波,如:
i=imread('104_8.tif');
j=medfilt2(i);
⑧锐化
(1)利用Sobel算子锐化数字数字图像, 如:
i=imread('104_8.tif');
h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子
j=filter2(h,i);
(2)利用拉氏算子锐化数字数字图像, 如:
i=imread('104_8.tif');
j=double(i);
h=[0,1,0;1,-4,0;0,1,0];%拉氏算子
k=conv2(j,h,'same');
m=j-k;
①sobel算子 如:
i=imread('104_8.tif');
j =edge(i,'sobel',thresh)
②prewitt算子 如:
i=imread('104_8.tif');
j =edge(i,'prewitt',thresh)
③roberts算子 如:
i=imread('104_8.tif');
j =edge(i,'roberts',thresh)
④log算子 如:
i=imread('104_8.tif');
j =edge(i,'log',thresh)
⑤canny算子 如:
i=imread('104_8.tif');
j =edge(i,'canny',thresh)
⑥Zero-Cross算子 如:
i=imread('104_8.tif');
j =edge(i,'zerocross',thresh)
①膨胀:是在二值化数字数字图像中“加长”或“变粗”的操作,函数imdilate执行膨胀运算,如:
a=imread('104_7.tif');%输入二值数字数字图像
b=[0 1 0;1 1 1;01 0];
c=imdilate(a,b);
②腐蚀:函数imerode执行腐蚀,如:
a=imread('104_7.tif');%输入二值数字数字图像
b=strel('disk',1);
c=imerode(a,b);
③开运算:先腐蚀后膨胀称为开运算,用imopen来实现,如:
a=imread('104_8.tif');
b=strel('square',2);
c=imopen(a,b);
④闭运算:先膨胀后腐蚀称为闭运算,用imclose来实现,如:
a=imread('104_8.tif');
b=strel('square',2);
c=imclose(a,b);
功能:计算和显示数字数字图像的色彩直方图
格式:
imhist(X,map)
功能:显示数字数字图像的等灰度值图
格式:
imcontour(I,n)
imcontour(I,v)
功能:通过直方图变换调整对比度
格式:
J=imadjust(I,[low high],[bottomtop],gamma)
newmap=imadjust(map,[low high],[bottomtop],gamma)
J=imadjust(I,[low high],[bottomtop],gamma)
其中,gamma
为校正量r
,[lowhigh]
为原数字数字图像中要变换的灰度范围,[bottom top]
指定了变换后的灰度范围;newmap=imadjust(map,[lowhigh],[bottom top],gamma)
调整索引色数字数字图像的调色板map
。此时若[low high]
和[bottom top]
都为2×3的矩阵,则分别调整R、G、B 3个分量。功能:直方图均衡化
格式:
J=histeq(I,hgram)
J=histeq(I,n)
[J,T]=histeq(I,...)
newmap=histeq(X,map,hgram)
newmap=histeq(X,map)
[new,T]=histeq(X,...)
J=histeq(I,hgram)
实现了所谓“直方图规定化”,即将原是图象 I 的直方图变换成用户指定的向量hgram
。hgram
中的每一个元素J=histeq(I,n)
指定均衡化后的灰度级数n
,缺省值为64;[J,T]=histeq(I,...)
返回从能将数字数字图像I
的灰度直方图变换成数字数字图像J
的直方图的变换T
;newmap=histeq(X,map)
和[new,T]=histeq(X,...)
是针对索引色数字数字图像调色板的直方图均衡。J=imnoise(I,type)
J=imnoise(I,type,parameter)
J=imnoise(I,type)
返回对数字数字图像I
添加典型噪声后的有噪数字数字图像J
,参数type
和parameter
用于确定噪声的类型和相应的参数。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
大小相同的中间部分;valid
返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当size(A)
>size(B)
时,size(C)=[Ma-Mb+1,Na-Nb+1]
。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)H=fspecial(type)
H=fspecial('gaussian',n,sigma) %高斯低通滤波器
H=fspecial('sobel') %Sobel 水平边缘增强滤波器
H=fspecial('prewitt') %Prewitt 水平边缘增强滤波器
H=fspecial('laplacian',alpha) %近似二维拉普拉斯运算滤波器
H=fspecial('log',n,sigma) %高斯拉普拉斯(LoG)运算滤波器
H=fspecial('average',n) %均值滤波器
H=fspecial('unsharp',alpha) %模糊对比增强滤波器
H=fspecial(type)
,fspecial
函数产生一个由type
指定的二维滤波器H
,返回的H
常与其它滤波器搭配使用。B=imfilter(A,h)
A
按指定的滤波器h
进行滤波增强处理,增强后的数字数字图像B
与A
的尺寸和类型相同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
的调用格式于对应的离散傅立叶变换函数一致。
**例子:**数字数字图像的二维傅立叶频谱
% 读入原始数字数字图像
I=imread('lena.bmp');
imshow(I)
% 求离散傅立叶频谱
J=fftshift(fft2(I));
figure;
imshow(log(abs(J)),[8,10])
B=dct2(A) 5
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。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。功能:计算 DCT 变换矩阵
格式:
D=dctmtx(n)
D=dctmtx(n)
返回一个n×n的DCT变换矩阵,输出矩阵D
为double类型。[cA,cD]=dwt(X,'wname')
[cA,cD]=dwt(X,Lo_D,Hi_D)
[cA,cD]=dwt(X,'wname')
使用指定的小波基函数'wname'
对信号X
进行分解,cA
、cD
分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D)
使用指定的滤波器组Lo_D
、Hi_D
对信号进行分解。X=idwt(cA,cD,'wname')
X=idwt(cA,cD,Lo_R,Hi_R)
X=idwt(cA,cD,'wname',L)
X=idwt(cA,cD,Lo_R,Hi_R,L)
X=idwt(cA,cD,'wname')
由近似分量cA
和细节分量cD
经小波反变换重构原始信号X
。'wname'
为所选的小波函数X=idwt(cA,cD,Lo_R,Hi_R)
用指定的重构滤波器Lo_R
和Hi_R
经小波反变换重构原始信号X
。X=idwt(cA,cD,'wname',L)
和X=idwt(cA,cD,Lo_R,Hi_R,L)
指定返回信号X
中心附近的L个点。函数名 | 方法 |
---|---|
dwt2 | |
wavedec2 | 二维信号的多层小波分解 |
idwt2 | 二维离散小波反变换 |
waverec2 | 二维信号的多层小波重构 |
wrcoef2 | 由多层小波分解重构某一层的分解信号 |
upcoef2 | 由多层小波分解重构近似分量或细节分量 |
detcoef2 | 提取二维信号小波分解的细节分量 |
appcoef2 | 提取二维信号小波分解的近似分量 |
upwlev2 | 二维小波分解的单层重构 |
dwtpet2 | 二维周期小波变换 |
idwtper2 | 二维周期小波反变换 |
Y=wcodemat(X,NB,OPT,ABSOL)
Y=wcodemat(X,NB,OPT)
Y=wcodemat(X,NB)
Y=wcodemat(X)
Y=wcodemat(X,NB,OPT,ABSOL)
返回数据矩阵X
的编码矩阵Y
;NB
伪编码的最大值,即编码范围为0~NB,缺省值NB=16;OPT 指定了编码的方式(缺省值为 ‘mat’),即:OPT=’row’ ,按行编码;OPT=’col’ ,按列编码;OPT=’mat’,按整个矩阵编码;ABSOL
是函数的控制参数(缺省值为 ‘1’),即:ABSOL=0 时,返回编码矩阵;ABSOL=1 时,返回数据矩阵的绝对值ABS(X)。[cA,cH,cV,cD]=dwt2(X,'wname')
[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)
[cA,cH,cV,cD]=dwt2(X,'wname')
使用指定的小波基函数'wname'
对二维信号X
进行二维离散小波变幻;cA,cH,cV,cD
分别为近似分量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)
使用指定的分解低通和高通滤波器Lo_D
和 Hi_D
分解信号X
。[C,S]=wavedec2(X,N,'wname')
[C,S]=wavedec2(X,N,Lo_D,Hi_D)
[C,S]=wavedec2(X,N,'wname')
使用小波基函数'wname'
对二维信号X
进行N
层分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D)
使用指定的分解低通和高通滤波器Lo_D
和Hi_D
分解信号X
。X=idwt2(cA,cH,cV,cD,'wname')
X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)
X=idwt2(cA,cH,cV,cD,'wname',S)
X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)
X=idwt2(cA,cH,cV,cD,'wname')
由信号小波分解的近似信号cA
和细节信号cH、cH、cV、cD
经小波反变换重构原信号X
;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)
使用指定的重构低通和高通滤波器Lo_R
和Hi_R
重构原信号X
;X=idwt2(cA,cH,cV,cD,'wname',S)
和X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)
返回中心附近的S个数据点。X=waverec2(C,S,'wname')
X=waverec2(C,S,Lo_R,Hi_R)
X=waverec2(C,S,'wname')
由多层二维小波分解的结果C
、S
重构原始信号X
,'wname'
为使用的小波基函数;X=waverec2(C,S,Lo_R,Hi_R)
使用重构低通和高通滤波器Lo_R
和Hi_R
重构原信号。