• 图像处理matlab

    2018-09-11 22:35:04
    1.基本函数: iread('文件路径'); idisp(); 2.一元操作: imd=idouble(im);... //将彩色图像转变成灰度图像。 ihist();//显示每一个像素值出现的次数 im=igamma(im,1/0.45); //伽马编码,一种非线性一...

    1.基本函数:

    iread('文件路径');

    idisp();

    2.一元操作:o[u,v]=f(I[u,v])

    imd=idouble(im);  //将像素从unit8(范围在0-255的整数像素)到范围在[0,1]的双精度值

    grey=imono(im);    //将彩色图像转变成灰度图像。

    ihist();//显示每一个像素值出现的次数

    im=igamma(im,1/0.45); //伽马编码,一种非线性一元操作

    3.二元操作:o[u,v]=f(I_{1}[u,v],I_{2}[u,v])

    isamesize(image1,image2);  //将2缩放并裁剪到跟1相同的大小

    ........

    4.空间操作o[u,v]=f(I[u+i,v+j])

     

    4.1互相关 o[u,v]=\sum _{(i,j)\epsilon w }I[u+i,v+j]K[i,j], K是互相关核,对于每一个输出像素,对应输入图像中的像素窗口w要逐个元素地与互相关核K相乘。

    在工具箱中,互相关使用函数iconv表示。iconv(image,K);

     

    4.1.1平滑处理(光滑化、模糊化或者散焦)

    K=ones(21,21)/21^2; //每一个输出像素都是输入图像中与之相对应的21x21相领像素的平均值  ->平均值滤波

    G(u,v)=\frac{1}{2\pi\sigma ^{2} }e^{-\frac{u^{2}+v^{2}}{2\sigma ^{2}}}  二维高斯函数(关于原点对称,曲线下方体积为1)的扩展由标准差参数\sigma控制。 ->高斯滤波

    K=kguass(5); //指定标准差为5像素

     

    4.1.2边界检测:
     lena=iread('C:\Users\Administrator\Desktop\matlab实验照片\2.jpeg','double','grey');

     p=lena(60,:);  //在v=60处图像中的一条水平线

    沿着这个横截面的一阶倒数是p^{^{'}}[v]=p[v]-p[v-1],一阶倒数可以用diff函数计算。->亮度变化的倒数

    在v点处的导数也可以写成对称的一阶差分:p^{^{'}}[v]=\frac{1}{2}(p[v+1]-p[v-1])

    它等同于和下面的一维互相关核求互相关运算:

                                                                     K=(-\frac{1}{2} 0 \frac{1}{2})

    将图像与这个核求互相关:

    K=[-0.5 0 0.5];

    idsip(iconv(lena,K),'invsigned')    ->图片具有高水平梯度的竖直边缘清晰可见。效果如下所示(上面为原图):

      

    利用索伯互相关核计算水平梯度,利用三行水平梯度的加权值。

    Du=ksobel,上图为原图,下面为处理之后的

    坎尼算子:

    算法大致流程:

    1、求图像与高斯平滑滤波器卷积:

    2、使用一阶有限差分计算偏导数的两个阵列P与Q:

    3、幅值和方位角:

    4、非极大值抑制(NMS ) :细化幅值图像中的屋脊带,即只保留幅值局部变化最大的点。

    将梯度角的变化范围减小到圆周的四个扇区之一,方向角和幅值分别为:

    非极大值抑制通过抑制梯度线上所有非屋脊峰值的幅值来细化M[i,j],中的梯度幅值屋脊.这一算法首先将梯度角θ[i,j]的变化范围减小到圆周的四个扇区之一

    edges=icanny(lena,2);效果如下所示:

    4.2模板匹配O[u,v]=s(T,W)

    函数s(T,W)是一个标量测度,用来描述两幅相同大小的图像T和W之间的相似性。

    常用方法有:绝对差值(SAD),差值平方和(SSD)以及互相关(NCC)

     

    展开全文
  • 显示索引图像和灰度图像>> [X,map]=imread('trees.tif');>> gmap=rgb2gray(map);>> figure,imshow(X,map);>> figure,imshow(X,gmap);利用膨胀函数平移图像...
    显示索引图像和灰度图像
    >> [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('中值滤波后图像')




    Matlab数字数字图像处理函数汇总:


    1、数字数字图像的变换


    ① fft2:fft2函数用于数字数字图像的二维傅立叶变换,如:i=imread('104_8.tif');


    j=fft2(i);


    ②ifft2::ifft2函数用于数字数字图像的二维傅立叶反变换,如:


     i=imread('104_8.tif');


     j=fft2(i);


    k=ifft2(j);


    2、模拟噪声生成函数和预定义滤波器


    ① 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');%均值滤波器


    2、数字数字图像的增强


    ①直方图: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;


    3、数字数字图像边缘检测


    ①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)


    4、形态学数字数字图像处理


    ①膨胀:是在二值化数字数字图像中“加长”或“变粗”的操作,函数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);


     


     


    数字数字图像增强
    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],[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个分量。


    1.4 histeq 函数
    功能:直方图均衡化
    格式: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 中的每一个元素
    都在 [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 大小相同的中间部分;
            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)<size(X) 。


    3.4 fspecial 函数
    功能:产生预定义滤波器
    格式: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 常与其它滤波器搭配使用。




    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的调用格式于对应的离散傅立叶变换函数一致。
    例子:数字数字图像的二维傅立叶频谱
    % 读入原始数字数字图像
    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)
    说明:D=dctmtx(n) 返回一个 n×n 的 DCT 变换矩阵,输出矩阵 D 为 double 类型。


    3. 数字数字图像小波变换的Matlab 实现
    3.1 一维小波变换的 Matlab实现
    (1) dwt 函数
    功能:一维离散小波变换
    格式:[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 对信号进行分解。


    (2) idwt 函数
    功能:一维离散小波反变换
    格式: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 个点。


    3.2 二维小波变换的 Matlab实现
              二维小波变换的函数
    -------------------------------------------------
         函数名                函数功能
    ---------------------------------------------------
         dwt2           二维离散小波变换
       wavedec2       二维信号的多层小波分解
         idwt2          二维离散小波反变换
       waverec2        二维信号的多层小波重构
       wrcoef2          由多层小波分解重构某一层的分解信号
       upcoef2          由多层小波分解重构近似分量或细节分量
       detcoef2         提取二维信号小波分解的细节分量
       appcoef2        提取二维信号小波分解的近似分量
       upwlev2         二维小波分解的单层重构
       dwtpet2         二维周期小波变换
       idwtper2        二维周期小波反变换
    -------------------------------------------------------------
    (1) wcodemat 函数
    功能:对数据矩阵进行伪彩色编码
    格式: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)


    (2) dwt2 函数
    功能:二维离散小波变换
    格式:[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 。


    (3) wavedec2 函数
    功能:二维信号的多层小波分解
    格式:[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 。


    (4) idwt2 函数
    功能:二维离散小波反变换
    格式: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 个数据点。


    (5) waverec2 函数
    说明:二维信号的多层小波重构
    格式: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 重构原信号。


     


     


    数字数字图像处理工具箱
    1. 数字数字图像和数字数字图像数据
       缺省情况下,MATLAB将数字数字图像中的数据存储为双精度类型(double),64位浮点
    数,所需存储量很大;MATLAB还支持另一种类型无符号整型(uint8),即数字数字图像矩
    阵中每个数据占用1个字节。
       在使用MATLAB工具箱时,一定要注意函数所要求的参数类型。另外,uint8
    与double两种类型数据的值域不同,编程需注意值域转换。
              从uint8到double的转换
       ---------------------------------------------
           数字数字图像类型        MATLAB语句
       ---------------------------------------------
         索引色             B=double(A)+1
         索引色或真彩色 B=double(A)/255
         二值数字数字图像          B=double(A)
       ---------------------------------------------
             从double到uint8的转换
       ---------------------------------------------
           数字数字图像类型        MATLAB语句
       ---------------------------------------------
        索引色              B=uint8(round(A-1))
        索引色或真彩色   B=uint8(round(A*255))
        二值数字数字图像           B=logical(uint8(round(A)))
       ---------------------------------------------


    2. 数字数字图像处理工具箱所支持的数字数字图像类型
    2.1 真彩色数字数字图像
        R、G、B三个分量表示一个像素的颜色。如果要读取数字数字图像中(100,50)处的像素值,
    可查看三元数据(100,50,1:3)。
        真彩色数字数字图像可用双精度存储,亮度值范围是[0,1];比较符合习惯的存储方法是用无
    符号整型存储,亮度值范围[0,255]
       
    2.2 索引色数字数字图像
       包含两个结构,一个是调色板,另一个是数字数字图像数据矩阵。调色板是一个有3列和若干行
    的色彩映象矩阵,矩阵每行代表一种颜色,3列分别代表红、绿、蓝色强度的双精度数。
       
       注意:MATLAB中调色板色彩强度[0,1],0代表最暗,1代表最亮。
              常用颜色的RGB值
       --------------------------------------------
        颜色   R   G   B      颜色    R  G   B 
       --------------------------------------------
         黑     0   0   1     洋红    1   0   1
         白     1   1   1     青蓝    0   1   1
         红     1   0   0     天蓝 0.67 0   1
         绿     0   1   0     橘黄    1 0.5 0
         蓝     0   0   1     深红   0.5 0   0
         黄     1   1   0      灰    0.5 0.5 0.5       
       --------------------------------------------
             产生标准调色板的函数
       -------------------------------------------------
        函数名      调色板
       -------------------------------------------------
         Hsv       色彩饱和度,以红色开始,并以红色结束
         Hot       黑色-红色-黄色-白色
         Cool      青蓝和洋红的色度
         Pink      粉红的色度
         Gray      线型灰度
         Bone      带蓝色的灰度
         Jet        Hsv的一种变形,以蓝色开始,以蓝色结束
         Copper    线型铜色度
         Prim       三棱镜,交替为红、橘黄、黄、绿和天蓝
         Flag       交替为红、白、蓝和黑
    --------------------------------------------------
       缺省情况下,调用上述函数灰产生一个64×3的调色板,用户也可指定调色板大小。
       
       索引色数字数字图像数据也有double和uint8两种类型。
       当数字数字图像数据为double类型时,值1代表调色板中的第1行,值2代表第2行……
       如果数字数字图像数据为uint8类型,0代表调色板的第一行,,值1代表第2行……


    2.3 灰度数字数字图像
       存储灰度数字数字图像只需要一个数据矩阵。
       数据类型可以是double,[0,1];也可以是uint8,[0,255]


    2.4 二值数字数字图像
       二值数字数字图像只需一个数据矩阵,每个像素只有两个灰度值,可以采用uint8或double类型存储。
       MATLAB工具箱中以二值数字数字图像作为返回结果的函数都使用uint8类型。


    2.5 数字数字图像序列
       MATLAB工具箱支持将多帧数字数字图像连接成数字数字图像序列。
       数字数字图像序列是一个4维数组,数字数字图像帧的序号在数字数字图像的长、宽、颜色深度之后构成第4维。
       分散的数字数字图像也可以合并成数字数字图像序列,前提是各数字数字图像尺寸必须相同,若是索引色数字数字图像,
    调色板也必须相同。
       可参考cat()函数    A=cat(4,A1,A2,A3,A4,A5)


    3. MATLAB数字数字图像类型转换
             数字数字图像类型转换函数
      ---------------------------------------------------------------------------
         函数名                     函数功能
      ---------------------------------------------------------------------------
         dither       数字数字图像抖动,将灰度图变成二值图,或将真彩色数字数字图像抖动成索引色数字数字图像
        gray2ind    将灰度数字数字图像转换成索引数字数字图像
        grayslice    通过设定阈值将灰度数字数字图像转换成索引色数字数字图像
         im2bw      通过设定亮度阈值将真彩色、索引色、灰度图转换成二值图
        ind2gray    将索引色数字数字图像转换成灰度数字数字图像
        ind2rgb      将索引色数字数字图像转换成真彩色数字数字图像
        mat2gray   将一个数据矩阵转换成一副灰度图
        rgb2gray    将一副真彩色数字数字图像转换成灰度数字数字图像
        rgb2ind      将真彩色数字数字图像转换成索引色数字数字图像
       ------------------------------------------------------------------------


    4. 数字数字图像文件的读写和查询
    4.1 图形数字数字图像文件的读取
       利用函数imread()可完成图形数字数字图像文件的读取,语法:
         A=imread(filename,fmt)
         [X,map]=imread(filename,fmt)
         [...]=imread(filename)
         [...]=imread(filename,idx) (只对TIF格式的文件)
         [...]=imread(filename,ref) (只对HDF格式的文件)
       通常,读取的大多数数字图像均为8bit,当这些数字图像加载到内存中时,Matlab就将其存放
    在类uint8中。此为Matlab还支持16bit的PNG和TIF数字图像,当读取这类文件时,Matlab就将
    其存贮在uint16中。
       注意:对于索引数字图像,即使数字图像阵列的本身为类uint8或类uint16,imread函数仍将
    颜色映象表读取并存贮到一个双精度的浮点类型的阵列中。


    4.2 图形数字图像文件的写入
       使用imwrite函数,语法如下:
       imwrite(A,filename,fmt)
       imwrite(X,map,filename,fmt)
       imwrite(...,filename)
       imwrite(...,parameter,value)
       当利用imwrite函数保存数字图像时,Matlab缺省的方式是将其简化道uint8的数据格式。


    4.3 图形数字图像文件信息的查询  imfinfo()函数




    5. 数字图像文件的显示
    5.1 索引数字图像及其显示
       方法一:
              image(X)
              colormap(map)
       方法二: 
              imshow(X,map)


    5.2 灰度数字图像及其显示
       Matlab 7.0 中,要显示一副灰度数字图像,可以调用函数 imshow 或 imagesc (即 
    imagescale,数字图像缩放函数)
       (1) imshow 函数显示灰度数字图像
        使用imshow(I)    或 使用明确指定的灰度级书目:imshow(I,32)
        
        由于Matlab自动对灰度数字图像进行标度以适合调色板的范围,因而可以使用自定义
    大小的调色板。其调用格式如下:
               imshow(I,[low,high])
        其中,low 和 high 分别为数据数组的最小值和最大值。
       (2) imagesc 函数显示灰度数字图像
       下面的代码是具有两个输入参数的 imagesc 函数显示一副灰度数字图像
           imagesc(1,[0,1]);
           colormap(gray);
        imagesc 函数中的第二个参数确定灰度范围。灰度范围中的第一个值(通常是0),
    对应于颜色映象表中的第一个值(颜色),第二个值(通常是1)则对应与颜色映象表
    中的最后一个值(颜色)。灰度范围中间的值则线型对应与颜色映象表中剩余的值(颜色)。
        在调用 imagesc 函数时,若只使用一个参数,可以用任意灰度范围显示数字图像。在该
    调用方式下,数据矩阵中的最小值对应于颜色映象表中的第一个颜色值,数据矩阵中的最大
    值对应于颜色映象表中的最后一个颜色值。


    5.3 RGB 数字图像及其显示
       (1) image(RGB) 
       不管RGB数字图像的类型是double浮点型,还是 uint8 或 uint16 无符号整数型,Matlab都
    能通过 image 函数将其正确显示出来。
       RGB8 = uint8(round(RGB64×255)); %将 double 浮点型转换为 uint8 无符号整型
       RGB64 = double(RGB8)/255;           % 将 uint8 无符号整型转换为 double 浮点型
       RGB16 = uint16(round(RGB64×65535)); %将 double 浮点型转换为 uint16 无符号整型 
       RGB64 = double(RGB16)/65535;      % 将 uint16 无符号整型转换为 double 浮点型
       (2) imshow(RGB) 参数是一个 m×n×3 的数组


    5.4 二进制数字图像及其显示
       (1) imshow(BW)
       在 Matlab 7.0 中,二进制数字图像是一个逻辑类,仅包括 0 和 1 两个数值。像素 0 显示
    为黑色,像素 1 显示为白色。
       显示时,也可通过NOT(~)命令,对二进制图象进行取反,使数值 0 显示为白色;1 显示
    为黑色。 
       例如:imshow(~BW)
       (2) 此外,还可以使用一个调色板显示一副二进制数字图像。如果图形是 uint8 数据类型,
    则数值 0 显示为调色板的第一个颜色,数值 1 显示为第二个颜色。
       例如:imshow(BW,[1 0 0;0 0 1])  


    5.5 直接从磁盘显示数字图像
       可使用一下命令直接进行数字图像文件的显示: 
            imshow filename
       其中,filename 为要显示的数字图像文件的文件名。
       如果数字图像是多帧的,那么imshow 将仅显示第一帧。但需注意,在使用这种方式时,数字图像
    数据没有保存在Matlab7.0 工作平台。如果希望将数字图像装入工作台中,需使用 getimage 函数,从当前的句柄图形数字图像对象中获取数字图像数据,
       命令形式为: rgb = getimage;


    bwlabel 
    功能: 
    标注二进制数字图像中已连接的部分。 
    L = bwlabel(BW,n) 
    [L,num] = bwlabel(BW,n)
    isbw 
    功能: 
    判断是否为二进制数字图像。 
    语法: 
    flag = isbw(A) 
    相关命令: 
    isind, isgray, isrgb 
    74.isgray 
    功能: 
    判断是否为灰度数字图像。 
    语法: 
    flag = isgray(A) 
    相关命令: 
    isbw, isind, isrgb
    11.bwselect 
    功能: 
    在二进制数字图像中选择对象。
    语法: 
    BW2 = bwselect(BW1,c,r,n) 
    BW2 = bwselect(BW1,n) 
    [BW2,idx] = bwselect(...) 
    举例 
    BW1 = imread('text.tif'); 
    c = [16 90 144]; 
    r = [85 197 247]; 
    BW2 = bwselect(BW1,c,r,4); 
    imshow(BW1) 
    figure, imshow(BW2)
    47.im2bw 
    功能: 
    转换数字图像为二进制数字图像。 
    语法: 
    BW = im2bw(I,level) 
    BW = im2bw(X,map,level) 
    BW = im2bw(RGB,level) 
    举例 
    load trees 
    BW = im2bw(X,map,0.4); 
    imshow(X,map)
    展开全文
  • matlab数字图像处理.pdf

    2020-07-10 23:31:41
    本书主要介绍MATLAB语言在图像处理技术方面的应用,重点介绍了各种图像处理方法的理论和实际应用,书中给出了大量MATLAB实例和图像处理效果,使渎职能够更好的理解和掌握使用MATLAB图像处理工具箱函数进行图像处理的...
  • MATLAB图像处理

    2018-10-22 21:38:06
    全面系统的学习MATLAB图像处理中的应用
  • 写在前头:说到数字图像处理,不得不提起MATLAB。这是一款非常方便的仿真软件,绝大多数的图像处理可以用MATLAB完成。  有人问,处理图片,用PS岂不是更好。两者各有优点,如果需要将10000幅图片转换成灰度...

    写在前头:说到数字图像处理,不得不提起MATLAB。这是一款非常方便的仿真软件,绝大多数的图像处理可以用MATLAB完成。
      有人问,处理图片,用PS岂不是更好。两者各有优点,如果需要将10000幅图片转换成灰度图像并保存呢?MATLAB只需要一段很短的程序运行几秒就可以完成这个工作。
    本文基于MatlabR2012a,将由浅入深写下去。

    MATLAB中图像的基本操作

    1、读取、显示图片

    MATLAB中提供了immread()与imshow()函数读取和显示图片。其中读取函数imread()原型:

    imread:
    A = imread(filename, fmt)

    A是结构体名,用来存储读入的图像数据。filename是读取的文件名,文件名要用”括起来。fmt是读取文件的类型如:jpg、png等等,这个参数可以不输入,由MATLAB自动判断。
    显示函数imshow()原型:

        imshow:
        imshow(I)

    I为读取后保存在MATLAB中的结构体名。
    程序实例:  

    A=imread('1.jpg');%读取名为1.jpg的图片
         imshow(A)%显示图片

    这里写图片描述

    2、将灰度图片变成负片

      对图像进行操作,实际上是将图像看成许多个像素点,对每个像素点进行操作。在计算机系统中,灰度图片被看成是许多个由值在[0~255]之间的像素点组成的图像,255表示白色,0表示黑色,黑白之间存在256个灰度级。
    这里写图片描述
      负片是指将原灰度图白色的地方变成黑色,黑色的地方变成白色。也就是将0变成255,255变成0。MALTAB的imadjust()函数提供了该功能。其函数原型:  

    imadjust:
      J = imadjust(I,[low_in; high_in],[low_out; high_out])

      其中,I为原灰度图像,low_in,high_in为输入图像的低和高灰度级,设置为[0,1]表示从0~255的归一化,low_out,high_out为输出图像的低高灰度级。
      若是想将图片转换为负片,那么将[low_in; high_in]设置为[0,1],将[low_out; high_out]设置为[1,0]。即原来输入为0的地方变成1输出,输入为1的地方变成0输出。
      实例: 

     A=imread('1.jpg');
    imshow(A)%显示原图
    A1=imadjust(A,[0,1],[1,0]);%将灰度级对调
    figure,imshow(A1)%显示负片

      这里写图片描述
      

    3、彩色图片转换成灰度图片

      我们在计算机中看到的大多数彩色图片是基于RBG三通道的图片,红绿蓝三种颜色,每一种取值均为[0~255]。通过255*255*255,可以构成庞大的颜色群。而灰度图像只有256个灰度级。通过以下公式可以将RGB转换成灰度
      GRAY=0.2989 R + 0.5870 * G + 0.1140 * B*
      MATLAB中提供的函数rgb2gray为我们提供了将彩色图片转换成灰度图片的功能。函数原型: 

    I = rgb2gray(RGB)

    实例:

     A=imread('001.png');%原彩色图片
    imshow(A)
    A_gray=rgb2gray(A);%转换成灰度图片
    figure,imshow(A_gray)

    这里写图片描述
      

    展开全文
  • MATLAB图像处理课程
    MATLAB图像处理—2950人已学习 
    课程介绍    
    201706271937092806.png
        MATLAB图像处理课程
    课程收益
        通过学习该课程系统掌握MATLAB图像处理的相关知识点。
    讲师介绍
        李立宗更多讲师课程
        南开大学计算机硕士毕业,目前在天津本地一所高校任副教授。
    课程大纲
      第1章:几何变换
        1.几何变换  14:23
      第2章:正交变换
        1.离散余弦变换  5:42
        2.傅里叶变换  6:28
        3.离散小波变换  10:05
        4.提升小波变换  8:06
      第3章:边缘检测
        1.边缘检测  5:35
      第4章:形态学变换
        1.图像腐蚀  5:33
        2.图像膨胀  4:40
        3.开运算  4:49
        4.闭运算  4:47
      第5章:图像增强
        1.直方图  7:05
        2.灰度变换  7:40
        3.灰度对数变换  4:52
        4.中值滤波  3:42
      第6章:JPEG压缩
        1.JPEG压缩  5:36
      第7章:类型转换
        1.RGB转灰度  3:02
        2.灰度图像二值化  3:21
      第8章:图像滤波
        1.图像滤波  7:10
      第9章:图像裁剪
        1.图像裁剪  5:57
      第10章:噪声
        1.简述  5:31
        2.高斯噪声  3:16
        3.localvar噪声-语法格式1  6:29
        4.localvar噪声-语法格式2  8:10
        5.泊松噪声  3:06
        6.椒盐噪声  5:48
        7.speckle噪声  5:12
      第11章:图像抖动
        1.图像抖动  2:29
      第12章:数字水印
        1.基本原理  7:20
        2.具体实现  8:33
      第13章:图像融合
        1.加法融合  4:08
        2.小波融合  5:53
        3.小波大数融合(理论讲解)  5:21
        4.小波大数融合(代码讲解)  6:04
      第14章:混沌系统
        1.系统概述  4:14
        2.绘制序列  7:00
        3.初始值敏感性  5:58
        4.二值化处理  7:27
        5.生成二值混沌图像  8:40
        6.生成灰度混沌图像  8:59
        7.生成彩色混沌图像  9:38
    大家可以点击【查看详情】查看我的课程
    展开全文
  • 平滑滤波——matlab图像处理 平滑滤波的目的是消除或尽量减少噪声,改善图像的质量。假设加性噪声是随机独立分布,这样利用图像像素领域的平均或加权平均即可有效地抑制噪声干扰。从信号分析的观点来看,图像平滑...

    平滑滤波——matlab图像处理

    平滑滤波的目的是消除或尽量减少噪声,改善图像的质量。假设加性噪声是随机独立分布,这样利用图像像素领域的平均或加权平均即可有效地抑制噪声干扰。从信号分析的观点来看,图像平滑本质上是低能滤波,信号的低频部分可通过,高频的噪声信号被阻截。但由于图像边缘也处于高频部分,这样往往带来另一个问题:在对图像进行平滑处理时,往往对图像的细化造成一定程度的损坏。
    领域运算可用领域与模版的卷积得到,这极大地方便了计算。
    MATLAB中提供的imfliter函数用于实现图像的平滑处理,其调用格式如下。
    B=imfliter(A,H):使用多维滤波器H对图像A进行滤波(平滑)。参数A可以是任意维的二值或非奇异数值型矩阵。参数H为矩阵,表示滤波器。H常由函数fspecial输出得到。返回值B与A的维数相同。
    B=imfliter(A,H,optional1,optional2,…)

    参数类型 说明
    X 输入图像的外边界通过X来扩展,X默认值为0
    symmetric 输入图像的外部边界通过镜像反射其内部边界来扩展
    circular 输入图像的别界通过假设输入图像为周期函数来扩展
    relicate 输入图像的外部别界通过复制内部别界的值来扩展
    same 输入和输出图像大小相等,默认操作
    full 输出图像比输入图像大
    corr 使用相关进行滤波(平滑)
    conv 使用卷积进行滤波(平滑)

    matlab中提供的fspecial函数用于创建二维滤波器:
    h=fspecial(type):
    type可以是:average,disk,gaussian,laplacian,log,motion,prewitt,sobel,unsharp。

    h=fspecial(type,parameters):创建指定类型和指定参数的二维滤波器h。参数parameters为与滤波器有关的参数。
    parameters可以是:n,radius,(hsize,sigma),alpha,(n,sigma),(len,theta)。

    clear all;
    I = imread('cameraman.tif');
    subplot(2,2,1);imshow(I);
    xlabel('(a)原始图像');
    H = fspecial('motion',20,45);
    MotionBlur = imfilter(I,H,'replicate');
    subplot(2,2,2);imshow(MotionBlur);
    xlabel('(b)运动模糊图像');
    H=fspecial('disk',10);
    blurred = imfilter(I,H,'replicate');
    subplot(2,2,3);imshow(blurred);
    xlabel('(c)模糊图像');
    H=fspecial('unsharp');
    sharpened = imfilter(I,H,'replicate');
    subplot(2,2,4);imshow(sharpened);
    xlabel('(d)锐化图像');
    

    图像的卷积运算

    对含有高斯噪声的图像进行平滑处理。

    clear all;
    I = imread('coins.png');
    Inoised = imnoise(I,'gaussian',0.1,0.005);%对图像进行高斯噪声加噪
    %制定卷积核
    h=ones(3,3)/5;
    h(1,1) = 0;
    h(1,3) = 0;
    h(3,1) = 0;
    h(1,3) = 0;
    %平滑运算
    I2=imfilter(Inoised,h);
    subplot(1,3,1);imshow(I);
    xlabel('(a)原始图像');
    subplot(1,3,2);imshow(Inoised);
    xlabel('(b)带噪声图像');
    subplot(1,3,3);imshow(I2);
    xlabel('(c)平滑后图像');
    

    图像的平滑处理

    有问题还请多多指教。刚刚入门。谢谢各位大牛。

    展开全文
  • Matlab图像处理新手——图像分割和画框显示篇 **前言:**许多人说Matlab对未来的工作没什么用,就目前了解的情况而言并非如此。如:现版本已有matlab转化成C语音的功能;matlab与DSP(API协议技术)、FPGA、西门子...
  • MATLAB图像处理工具箱

    2018-08-11 22:21:26
    自己在学习过程中查阅资料整理了MATLAB图像处理工具箱中函数的名称列表,以及MathWorks中讲解各个函数使用的链接: 1.绘图工具箱 plot 基本绘图函数 mesh 绘制三维网格曲面 fplot 绘制数学函数图 ....
  • 计算机图像处理实验课1-9,看完本课程可以让你matlab技能小小进步,对图像处理稍微了解。、 (一)matlab数字图像处理实验-guide的简单使用教程 (二)matlab数字图像处理实验-图像的几何变换 (三)matlab数字...
  • 在MATLAB中,基本数据结构为数列,大部分图像也是以数列的方式存储的,例如,包含1024列768行的彩色图像,在MATLAB中被...1.MATLAB图像表达方式 在MATLAB中,图像可以以两种方式表达,分别为像素索引和空间位置。 (1)
  • Matlab图像处理大师淘宝店(QQ:3249726188) 专注、专一于Matlab图像处理 本店绝非中介,本店代码均由本人及硕士师弟代写完成,提供有偿Matlab算法代码编程服务,不从事不违反涉及学术原则的事。 另外,本店的...
  • Matlab 图像处理工具箱

    2015-04-08 21:51:24
    计算机视觉/图像处理研究中经常要用到Matlab,虽然其自带了图像处理和计算机视觉的许多功能,但是术业有专攻,在进行深入的视觉算法研究的时候Matlab的自带功能难免会不够用。本文收集了一些比较优秀的Matlab计算机...
  • ①目前,数字图像处理的信息大多是二维信息,处理信息量很大。 ②数字图像处理占用的频带较宽。 ③数字图像中各个像素是不独立的,其相关性大。3.什么是像素? 像素是一个面积概念,是构成数字图像的最小单位。4....
  • 基于MATLAB图像处理的中值滤波、均值滤波以及高斯滤波的实现与对比 1.背景知识 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤波是基于排序...
  • 第一章 matlab图像处理编程基础之读取和写入文件 1.优化小技巧:提前分配矩阵内存 如memo=zeros(1024,128),这条语句用于构造一个元素全为零的矩阵,但同时也很自然地分配一块足够大的空间。 2.M文件的不能命名为...
  • 今天发现了matlab图像处理工具箱的强大之处, 任务缘由: 需要对图像进行批处理改变尺寸 一般遇到这种任务,我们往往都会写matlab代码进行批量操作 但是matlab有自带的很强大的图像处理工具箱,  图片批处理...
1 2 3 4 5 ... 20
收藏数 50,774
精华内容 20,309