matlab与图像处理_精通matlab数字图像处理与识别 matlab - CSDN
精华内容
参与话题
  • 1.MATLAB图像处理基础知识

    万次阅读 多人点赞 2017-05-06 14:20:57
    在MATLAB中,基本数据结构为数列,大部分图像也是以数列的方式存储的,例如,包含1024列768行的彩色图像,在MATLAB中被...1.MATLAB图像表达方式 在MATLAB中,图像可以以两种方式表达,分别为像素索引和空间位置。 (1)

    更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013

    在MATLAB中,基本数据结构为数列,大部分图像也是以数列的方式存储的,例如,包含1024列768行的彩色图像,在MATLAB中被存储为1024X768的矩阵;其中,矩阵的值为色彩值。这样就把图像变成了数列了,MATLAB就可以使用数学函数对图像进行处理了。

    更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013

    1.MATLAB图像表达方式

    在MATLAB中,图像可以以两种方式表达,分别为像素索引和空间位置。

    (1) 像素索引

         像素索引是表达图像最方便的方法。在使用像素索引时,图像被视为离散的单元,按照空间顺序从上网下,从左往右排列。像素索引值为正整数。

        在使用像素索引时,像素值与索引有一一对应的关系,例如,位于第3行第3列的像素值存储在矩阵元素(3,3)中,可以使用MATLAB提供的函数进行访问。例如,使用命令A(3,3)可以获取第3行第3列的像素值,还可以使用命令A(3,3,:)获取RGB图像中第3行第3的R,G,B值。

    (2)空间位置

        空间位置图像表达式方式是将图像与空间位置联系起来的一种表达方式,这种方式与像素索引表达式没有本质区别,但使用空间位置连续值取代像素索引离散值进行。

       例如,包含1024列768行的图像,使用默认的空间位置表示为:X向数据存储位置为[1 1024],Y向数据存储位置为[1  768],但是,由于数据存储位置为坐标范围的中点位置,所以使用的位置范围分别为[0.5 1024.5]和[0.5 768.5]。


    例1.

    A=magic(5);   % 产生一个5X5的矩阵
    >> image(A)   % image是用来显示附标图像,即显示的图像上有x,y坐标轴的显示,可以看到图像的像素大小,
    >>                     %imshow只是显示图像。它们都可以用subplot来定位图像显示的位置,用colormap来定义图像显示用的颜色查找表


    2.MATLAB支持的文件格式

        图像格式指的是存储介质上存储图像采用的格式。根据操作系统、图像处理软件的不同,所支持的图像格式可能不同。目前,经常采用的图像格式有BMP,GIF,TIFF,PCX,JPEG,PSD,和WMF等,MATLAB支持大部分的图像格式。

    在MATLAB中,可以使用imfinfo函数来获取图像文件信息。虽然更加文件类型的不同,获取的信息也不一样,但对于所有格式的图像文件,都可以获取以下信息:

    文件名 、文件格式、文件格式版本、文件修改日期、文件大小、横向像素量、纵向像素量、像素值位数、图像类型如真彩色灰度值等。


    例2

    imfinfo('C:\Users\Administrator\Desktop\picture\logo.png')   %输入图片的路径

    ans =

                      Filename: 'C:\Users\Administrator\Desktop\picture\logo.png'
                   FileModDate: '27-Dec-2016 15:04:23'
                      FileSize: 138021
                        Format: 'png'
                 FormatVersion: []
                         Width: 400
                        Height: 269
                      BitDepth: 24
                     ColorType: 'truecolor'
               FormatSignature: [137 80 78 71 13 10 26 10]
                      Colormap: []
                     Histogram: []
                 InterlaceType: 'none'
                  Transparency: 'alpha'
        SimpleTransparencyData: []
               BackgroundColor: []
               RenderingIntent: 'perceptual'
                Chromaticities: [0.3127 0.3290 0.6400 0.3300 0.3000 0.6000 0.1500 0.0600]
                         Gamma: 0.4545
                   XResolution: 3780
                   YResolution: 3780
                ResolutionUnit: 'meter'
                       XOffset: []
                       YOffset: []
                    OffsetUnit: []
               SignificantBits: [8 8 8 8]
                  ImageModTime: []
                         Title: []
                        Author: []
                   Description: []
                     Copyright: []
                  CreationTime: []
                      Software: []
                    Disclaimer: []
                       Warning: []
                        Source: []
                       Comment: []
                     OtherText: []


    3.MATLAB图像类型

    在MATLAB中,图像的类型分为4类,

    二进制图

    索引图(伪彩色)

    灰度图

    RGB图(真彩色)


    (1)二进制图

    在二进制图中,像素的取值为两个离散数值0或1中的一个,0代表黑色,1代表白色


     A=[0 0 1;1 1 0; 0 0 1];
    >> imshow(A,'InitialMagnification','fit')          %调整合适的窗口显示A。




    (2)索引图

    索引图像包括一个数据矩阵X,一个颜色映像矩阵Map。其中Map是一个包含三列、若干行的数据阵列,其中每个元素的值均为[0, 1]之间的双精度浮点型数据。Map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。在MATLAB中,索引图像是从像素值到颜色映射表值的“直接映射”。像素颜色由数据矩阵X作为索引指向矩阵Map进行索引,例如,值1指向矩阵Map中的第一行,值2指向第二行,以此类推。

    索引图像的作用就是体积小,方便传输,只需要把索引表传输过去,接收方用对应的RGB颜色表还原就行。



    (3)灰度图

    灰度图通常由一个unit8、unit16、单精度类型或者双精度类型的数组描述,其实质是一个数据矩阵I,该矩阵中的数据均代表了一定范围内的灰度级,每一个元素与图像的一个像素点相对应,通常0代表黑色,1、255或65635(为数据矩阵的取值范围上限)代表白色。


    (4)RGB图

    RGB图像又称为真彩图像,它使用R、G、B 3个分量标识一个像素的颜色,R、G、B分别代表红、绿、蓝3种不同的基础颜色,通过3基色可以合成出任意颜色。所以对一个尺寸nxm的彩色图像来说,MATLAB中则存储为一个nxmx3 的多维数据数组,其中数组中的元素定义了图像中每一个像素的红、绿、蓝颜色值。图形文件格式把RGB图像存储为24位的图像,红、绿、蓝分量分别占用8位,因而理论上可以有2^24种颜色。


    4.   MATLAB图像类型转换

    在一些图像操作中,需要对图像的类型进行变换。例如,对一幅索引彩色图进行滤波,首先应该将其转换成RGB图像,此时,对图像使用滤波器时,MATLAB将对图像中的颜色进行滤波,如果不把索引图像进行转换,MATLAB则对图像调色板的序号进行滤波。

    下面对MATLAB图像处理中常用的一些类型转换函数进行介绍

    (1)灰度图转换成索引图

         使用  gray2ind  函数可以将灰度图转化成索引图,其语法格式

     [X,map]=gray2ind(I,n): 根据指定的灰度级数n和颜色图map,将灰度图像I转换成索引图像X,n的默认值为64.

    例:

    A=imread('C:\Users\Administrator\Desktop\picture\MATLAB图像处理\1.4.jpg');
    subplot(2,2,1);
    imshow(A);
    title('原图(RGB图)');
    >> I=rgb2gray(A); %RGB图转化为灰度图
    >> subplot(2,2,2);
    >> imshow(I);
    >> title('灰度图');
    >> [X,map]=gray2ind(I); %灰度图转化为索引图
    >> subplot(2,2,3);
    >> imshow(X);
    >> title('灰度图转化为索引图的X矩阵');
    >> subplot(2,2,4);
    >> imshow(map);
    >> title('灰度图转化为索引图的调色板图map');



    (2)索引图转换为灰度图

         使用  ind2gray  函数可以将索引图转换为灰度图,语法格式为

      I=ind2gray(X,map):将具有调色板矩阵的索引图转换成灰度图,丢弃图像的色彩和饱和度,仅保留了图像的亮度信息。

      该指令的输入图像可以是double或int8类型,输出图像为double类型

    例:

    A=imread('C:\Users\Administrator\Desktop\picture\MATLAB图像处理\1.4.jpg');
    >> subplot(2,2,1);
    >> imshow(A);
    >> title('原图(RGB图)');
    >> [X,map]=rgb2ind(A,256);%RGB图转化为索引图,map中至少包含256种颜色
    >> subplot(2,2,2);
    >> imshow(X);
    >> title('RGB转化为索引图中的X矩阵');
    >> subplot(2,2,3);
    >> imshow(map);
    >> title('RGB转化为索引图中的调色板图map');
    >> I=ind2gray(X,map);
    >> subplot(2,2,4);
    >> imshow(I);
    >> title('索引图转换为灰度图');





    (3)RGB图转换为灰度图

    使用   rgb2gray   函数可以将一幅RGB图转换成灰度图,语法格式为

     I=rgb2gray(RGB):将RGB图转换成灰度图I。

    (4)RGB图转化为索引图

        使用rgb2ind函数可以将RGB图转化成索引图,可采用的方法包括直接转化法(已被放弃的用法,新版MATLAB已不支持)、均值量化、最小量化、颜色图近似。

     [X,map]=rgb2ind(RGB):直接将RGB图像转化为具有调色板图map的矩阵X(以被弃用);

     [X,map]=rgb2ind(RGB,tol):用均值量化的方法将RGB图像转化为索引图像X,tol的范围为0.0--1.0;

     [X,map]=rgb2ind(RGB,n):使用最小方差量化方法将RGB图像转化为索引图像,map中包含至少n个颜色。

      X=rgb2ind(RGB,map):通过将RGB图中的颜色与调色板图map中最相近的颜色匹配,将RGB转化为具有map颜色的索引。

    (5)索引图转换为RGB图

       使用 ind2RGB  函数可以将索引图转化成RGB图像,语法格式

      RGB=ind2rgb(X,map):将矩阵X及相应的调色板图map转换成真彩图像RGB。


    例:

    A=imread('C:\Users\Administrator\Desktop\picture\MATLAB图像处理\1.4.jpg');
    subplot(2,2,1);
    imshow(A);
    title('原图(RGB图)');
    [X,map]=rgb2ind(A,256);%RGB图转化为索引图,map中至少包含256种颜色
    subplot(2,2,2);
    imshow(X);
    title('RGB转化为索引图中的X矩阵');
    subplot(2,2,3);
    imshow(map);
    title('RGB转化为索引图中的调色板图map');
    >> RGB=ind2rgb(X,map); %索引图转换为RGB图
    >> subplot(2,2,4);
    >> imshow(RGB);
    >> title('索引图转换为RGB图');





    (6)将矩阵转换成灰度图像

    使用 mat2gray 函数可以将一个数据矩阵转换为一幅灰度图像,语法格式

     I=mat2gray(X,[Xmin,Xmax]):按指定的取值区间[Xmin,Xmax]将数据矩阵X转化为图像I,Xmin对应灰度0,Xmax对应灰度1。如果不指定区间[Xmin,Xmax]时,MATLAB则自动将X矩阵中最小设为Xmin,最大设为Xmax。


    例:

    A=magic(10);
    >> I=mat2gray(A);
    >> imshow(I,'InitialMagnification','fit')        %调整合适的窗口显示A。


    5.MATLAB图像数据 读/写

    (1).读数据

        在MATLAB中,可以使用 imread 函数读取程序中支持的文件,该命令的相应格式如下:

        A = imread(filename, fmt)
        [X, map] = imread(...)
        [...] = imread(filename)
        [...] = imread(URL,...)
        [...] = imread(...,Param1,Val1,Param2,Val2...)


      在MATLAB中,可用 load 指令读入 .mat 类型的数据

    关于 imread 和 load

    load是导入文件,一般从mat文件中
    imread是图像处理工具箱的库函数,处理图像比较方便

    (2)写数据

         在MATLAB中,可以使用 imwrite 命令将MATLAB工作区中的图像数据写入到支持格式的图像文件中。

      例1

      A=imread(‘..........’);

      imwrite(A ,' ......... ');     % 省略号为读和写的路径

    更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013


    展开全文
  • 图像处理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)

     

    展开全文
  • MATLAB 图像处理于数字化(一)

    千次阅读 2019-04-16 14:58:25
    本文探究了MATLAB(R2015a)软件下数字图像处理部分简单内容方法的操作实现,包括图像变换、图像增强等。 在这里,我们介绍一些图片编辑的基本操作,本文中对于大多数的操作,是对数字图像处理领域中最为著名的“lena...

    MATLAB作为数学领域应用最广泛的一种软件,集成了对于图片处理的函数和功能,成为了处理数字图像问题的佼佼者。其出众的计算能力和简便的绘图能力可以有效进行数字图像的变换和操作。本文探究了MATLAB(R2015a)软件下数字图像处理部分简单内容方法的操作实现,包括图像变换、图像增强等。

    在这里,我们介绍一些图片编辑的基本操作,本文中对于大多数的操作,是对数字图像处理领域中最为著名的“lena”图片进行操作的。

    操作的问题如下:

    (1)将 lena.jpg 读入到 Matlab 并显示
    (2)将彩色图像转化为灰度图像,并保存到电脑里(文件名为 lena_gray.jpg)
    (3)绘制 lena_gray.jpg 的灰度直方图
    (4)利用 imnoise 函数为 lena_gray.jpg 添加高斯噪声和椒盐噪声,并分别将生成的图片保存到电脑里(文件名分别为 lena_gauss.jpg 和 lena_pepper.jpg)
    (5)通过帮助文件,学习函数 rgb2ind/ind2rgb,gray2ind/ind2gray 函数的用法,并将 lena.jpg和 lena_gray.jpg 进行转化。
    (6)将 lena.jpg 和 lena_gray.jpg 转化为二值图像(im2bw),并显示出来。
    

    lena

    首先是将lena读取到MATLAB中:

    ph_1=imread('lena.jpg');
    imshow(ph_1);
    

    将彩色的三维图片灰度化,此时用函数rgb2gray()进行操作,并用figure新开一个窗口,用来展示灰度化的图片,在接下来的每一步中,都会用到该函数开辟新的窗口,用来展示新的图片。

    ph_2=rgb2gray(ph_1);
    imwrite(ph_2,'lena_gray.jpg');%将ph_2以lena_gray.jpg的文件名存入计算机
    figure,imshow(ph_2);
    

    生成的图片如下所示:

    lena_gray.jpg

    为了显示图像灰度的分布情况,还需要绘制灰度直方图。可以使用如下代码:

    figure,imhist(ph_2);
    

    生成的图片如下所示:
    灰度直方图

    对图片添加噪声,所用函数为imnoise (I, type),该函数中的type可以为5种噪声参数,分别为:‘gaussian’(高斯白噪声),‘localvar’(与图象灰度值有关的零均值高斯白噪声),‘poisson’(泊松噪声),‘salt & pepper’(椒盐噪声)和’speckle’(斑点噪声)。

    以下为高斯噪声的代码和效果:

    ph_3=imnoise(ph_2,'gaussian');%高斯噪声
    figure,imshow(ph_3);
    imwrite(ph_3,' lena_gauss.jpg');
    

    高斯噪声生成的图片如下所示:
    在这里插入图片描述

    以下为椒盐噪声的代码和效果:

    ph_4=imnoise(ph_2,'salt');%椒盐噪声
    figure,imshow(ph_4);
    imwrite(ph_4,'lena_pepper.jpg');
    

    椒盐噪声生成的图片如下所示:
    lena_pepper.jpg

    函数rgb2ind()将真彩色图像转换为索引图像。索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值。

    调用方法:
     
    [X,map] = rgb2ind(RGB, n)%灰度变索引,n是颜色数,可变
    
    X = rgb2ind(RGB, map)%使用调色板map将真彩色图像转换为索引图像,即在调色板中找    到与真彩色图像颜色值最接近的颜色作为转换后的索引图像的像素值。map中颜色项数(即size(map, 1))不能超过65536。
    
    [X,map] = rgb2ind(RGB, tol)%利用第一种算法把真彩色图像转换为索引图像, map中最多包含(floor(1/tol)+1)^3种颜色, tol必须是介于0.0和1.0之间的数。
    
    [imgind, map] = rgb2ind(ph_1,10);
    figure('Name', '显示索引图像')
    imshow(imgind, map)
    

    生成图像如下:

    在这里插入图片描述

    ind2rgb() 将索引图像图像转换为RGB图像,输入包括图像矩阵和颜色图数组

    x=ind2rgb(imgind,map);
    figure,imshow(x);
    

    生成图像如下:

    在这里插入图片描述

    im2bw:基于阈值,将图像转变成二进制图像。
    
    BW = im2bw(I, level):将灰度图像I转变成二级制图像BW
    
    level:阈值等级,取值范围【0,1】
    
    BW: 逻辑型
    
    如果I中像素亮度比I*level大,则该值变为1,否则为0
    
    ph_5 = im2bw(ph_1,0);
    figure
    subplot(1,2,1);%将窗口一分为二,在第一个位置输出图片
    imshow(ph_5);
    ph_6= im2bw(ph_1,1);
    subplot(1,2,2);
    imshow(ph_6);
    

    生成图像如下:在这里插入图片描述

    ph_7 = im2bw(ph_1,0);
    figure
    subplot(1,2,1);
    imshow(ph_7);
    ph_8= im2bw(ph_2,1);
    subplot(1,2,2);
    imshow(ph_8);
    

    生成图像如下:在这里插入图片描述

    展开全文
  • C11E=eye(3,3);R=rand(3,2);S=[2 0;0 4];O=zeros(2,3);A=[E,R+R*S;O S^2]C=A*A;B=C结果:>&... C11E = 1 0 0 0 1 0 0 0 1R = 0.9572 0.1419 0.4854 0.4218 0.8003 0.9157S = 2 0 0 4O =...

    C11

    E=eye(3,3);
    
    R=rand(3,2);
    
    S=[2 0;0 4];
    
    O=zeros(2,3);
    
    A=[E,R+R*S;O S^2]
    
    C=A*A;
    
    B=C
    
    


    结果:

    >> C11


    E =


       1  0  0

       0  1  0

       0  0  1



    R =


      0.9572  0.1419

      0.4854  0.4218

      0.8003  0.9157



    S =


       2  0

       0  4



    O =


       0  0  0

       0  0  0



    A =


     Columns 1 through 4


      1.0000    0    0  2.8715

         0  1.0000    0  1.4561

         0    0  1.0000  2.4008

         0    0    0  4.0000

         0    0    0    0


     Column 5


      0.7094

      2.1088

      4.5787

         0

      16.0000



    C =


     Columns 1 through 4


      1.0000    0    0 14.3575

         0  1.0000    0  7.2806

         0    0  1.0000 12.0042

         0    0    0 16.0000

         0    0    0    0


     Column 5


      12.0603

      35.8497

      77.8375

         0

     256.0000



    B =


     Columns 1 through 4


      1.0000    0    0 14.3575

         0  1.0000    0  7.2806

         0    0  1.0000 12.0042

         0    0    0 16.0000

         0    0    0    0


     Column 5


      12.0603

      35.8497

      77.8375

         0

     256.0000


    ================================================================

    C12

    t=-1:0.01:1;
    
    x=sin(2*pi*t);
    
    y=cos(2*pi*10*t);
    
    plot(t,x,t,y)
    
    xlabel('t');ylabe('函数值')
    
    legend('正弦函数','余弦函数');
    
    



    结果:

    

    C13

    [x,y]=meshgrid(-10:0.05:10);
    
    z=sin(pi*sqrt(x.^2+y.^2));
    
    mesh(x,y,z)
    
    
    
    



    结果

    


    ================================================================

    C14

    x=-5:0.1:5;
    
    y1=tpdf(x,5);
    
    y2=tpdf(x,10);
    
    y3=tpdf(x,20);
    
    z=normpdf(x,0,1);
    
    plot(x,y1,x,y2,x,y3,x,z)
    
    legend('y1','y2','y3','z')


    结果


    

    ================================================================

    C15

    x=0:0.2:30;
    
    y1=chi2pdf(x,5);
    
    y2=chi2pdf(x,10);
    
    y3=chi2pdf(x,20);
    
    plot(x,y1,x,y2,x,y3)
    
    


    结果

    

    ================================================================

    C16

    L=[1.015;0.985;1.020;2.016;1.981;3.032]
    
    A=[1,0,0;0,1,0;0,0,1;1,1,0;0,1,1;1,1,1]
    
    C=inv(A'*A)
    
    X=C*A'*L
    
    x1=X(1,1),x2=X(2,1),x3=X(3,1)
    
    V=L-A*X
    
    v1=V(1,1),v2=V(2,1),v3=V(3,1),v4=V(4,1),v5=V(5,1),v6=V(6,1)
    
    b=sqrt((v1^2+v2^2+v3^2+v4^2+v5^2+v6^2)/3)
    
    d11=C(1,1),d22=C(2,2),d33=C(3,3)
    
    bx1=b*sqrt(d11)
    
    bx2=b*sqrt(d22)
    
    bx3=b*sqrt(d33)
    
    



    结果

    >> C16


    L =


      1.0150

      0.9850

      1.0200

      2.0160

      1.9810

      3.0320



    A =


       1  0  0

       0  1  0

       0  0  1

       1  1  0

       0  1  1

       1  1  1



    C =


      0.5000 -0.2500    0

      -0.2500  0.5000 -0.2500

         0 -0.2500  0.5000



    X =


      1.0280

      0.9830

      1.0130



    x1 =


      1.0280



    x2 =


      0.9830



    x3 =


      1.0130



    V =


      -0.0130

      0.0020

      0.0070

      0.0050

      -0.0150

      0.0080



    v1 =


      -0.0130



    v2 =


      0.0020



    v3 =


      0.0070



    v4 =


      0.0050



    v5 =


      -0.0150



    v6 =


      0.0080



    b =


      0.0134



    d11 =


      0.5000



    d22 =


      0.5000



    d33 =


      0.5000



    bx1 =


      0.0095



    bx2 =


      0.0095



    bx3 =


      0.0095


    >> 


    ================================================================


    C17

    x=[26.8 25.4 28.9 23.6 27.7 23.9 24.7 28.1 26.9 27.4 22.6 25.6];
    
    y=[26.5 27.3 24.2 27.1 23.6 25.9 26.3 22.5 21.7 21.4 25.8 24.9];
    
    A=[ones(1,12);x]';
    
    B=[ones(1,12);y]';
    
    a=inv(A'*A)*A'*y';
    
    b=inv(B'*B)*B'*x';
    
    x1=20:.1:30;
    
    y2=20:.1:30;
    
    y1=a(1)+a(2)*x1;
    
    x2=b(1)+b(2)*y2;
    
    plot(x,y,'o',x1,y1,y2,x2)
    
    yg=a(1)+a(2)*x;
    
    U=sum((yg-mean(y)).^2);
    
    Q=sum((y-yg).^2);
    
    F=U./(Q./10);
    
    S2=Q/10;
    
    S=Q+U;
    
    U,Q,F,S2,S
    
    

    结果:

    

    >> C17


    U =


      20.2621



    Q =


      26.8845



    F =


      7.5367



    S2 =


      2.6885



    S =


      47.1467


    >> 




    实验2

    

    clc;
    
    clear all
    
    close all;
    
    T=imread('f1.jpg');
    
    %读入电极图像
    
    M=imresize(T,[256 256]);
    
    %将图像调整256×256,为了显示方便
    
    YT=rgb2gray(M);
    
    %将RGB 格式转换为灰度图像
    
    %Figure(),
    
    %figure
    
    subplot(2,5,1)
    
    imshow(YT);title('Original Pic');
    
    %%
    
    %显示原始图像
    
    %去噪%
    
    %1 中值滤波去噪%
    
    Z1=medfilt2(YT,[5,5]);
    
    %2 小波分析去噪%
    
    %使用sym4 小波,设定全局阈值去噪%
    
    [THR,SORH,KEEPAPP]=ddencmp('den','wv',Z1);
    
    X=wdencmp('gbl',Z1, 'sym4',2,THR, SORH, KEEPAPP);
    
    subplot(2,5,2)
    
    %Figure,
    
    imshow(X,[])
    
    title('去噪图像') %显示去噪图像
    
    %%
    
    [Z1,s]=wavedec2(X,2, 'sym4');
    
    %进行二层小波分解
    
    len=length(Z1);
    
    %处理分解系统,突出轮廓,弱化细节%
    
    for i=1:len
    
    if(Z1(i)>334)
    
    Z1(i)=2* Z1(i);
    
    else
    
    Z1(i)=0.5* Z1(i);
    
    end
    
    end
    
    Z=waverec2(Z1,s,'sym4'); %分解系数重构
    
    %figure,
    
    subplot(2,5,3)
    
    imshow(Z,[])
    
    title('增强图像') %显示增强图像
    
    %%
    
    BW1=edge(Z, 'canny', 0.15) %canny 边缘检测
    
    %figure,
    
    subplot(2,5,4)
    
    imshow(BW1)
    
    title('canny 检测效果') %显示边缘检测图像
    
    %%
    
    %填补缝隙%
    
    se90=strel('line',3,90);
    
    se0=strel('line',3, 0);
    
    %膨胀操作%
    
    BWsdil=imdilate(BW1, [se90,se0]);
    
    %figure,
    
    subplot(2,5,5)
    
    imshow(BWsdil);
    
    title('膨胀图像') %显示膨胀图像
    
    %填充%
    
    BWdfill=imfill(BWsdil, 'holes')
    
    %figure,
    
    subplot(2,5,6)
    
    imshow(BWdfill)
    
    title('填充图像') %显示填充图像
    
    %移除与边界连通的目标%
    
    BWnobord=imclearborder(BWdfill,4)
    
    %figure, 
    
    subplot(2,5,7)
    
    imshow(BWnobord)
    
    title('移除与边界连通的图像') %显示移除与边界连通的图像
    
    %平滑%
    
    seD=strel('diamond',1)
    
    BWfinal1=imerode(BWnobord,seD)
    
    BWfinal2=imerode(BWfinal1,seD)
    
    %figure, 
    
    subplot(2,5,8)
    
    imshow(BWfinal2)
    
    title('平滑图像') %显示平滑图像
    
    %%
    
    %计算裂纹面积%
    
    count=0 %记录裂纹图像像素点的个数
    
    [i,j]=size(BWfinal2);
    
    for m=1:i
    
    for n=1:j
    
    if BWfinal2(m,n)>0 %判断是否为裂纹图像像素点
    
    count=count+1;
    
    end
    
    end
    
    end
    
    S=count %统计裂纹图像像素点的个数
    
    %%
    
    BWfinal3=uint8(BWfinal2);
    
    BW2=edge(BWfinal3, 'canny') %边缘提取
    
    %figure, 
    
    subplot(2,5,9)
    
    imshow(BW2)
    
    title('canny 检测效果') %显示边缘检测图像
    
    [x,y]=size(BW2)
    
    BW=bwperim(BW2, 8) %检测目标的边缘跟踪,用于计算周长
    
    %检测垂直方向连续的周长像素点%
    
    P1=0;
    
    P2=0;
    
    Ny=0; %记录垂直方向连续周长像素点的个数
    
    for i=1:x
    
    for j=1:y
    
    if(BW(i,j)>0)
    
    P2=j;
    
    if((P2-P1)==1) %判断是否为垂直方向连续的周长像素点
    
    Ny=Ny+1;
    
    end
    
    P1=P2;
    
    end
    
    end
    
    end
    
    %检测水平方向连续的周长像素点%
    
    P1=0
    
    P2=0
    
    Nx=0
    
    for j=1:y
    
    for i=1:x
    
    if(BW(i,j)>0)
    
    P2=i
    
    if((P2-P1)==1) %判断是否为水平方向连续的周长像
    
    


    展开全文
  • MATLAB图像处理_感悟和总结

    千次阅读 2015-01-16 14:56:01
    两个星期的图像处理研究学习差不多告一段落; 真的应了一句话,只有你接触某个领域,才真正可以体会到某个领域的魅力所在: 到目前为止
  • 全是书中源代码,非常详细
  • 使用matlab图像进行二值化处理

    万次阅读 2018-09-03 22:23:03
    图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。 A=imread(D:\A); thresh=graythresh(A);%确定二值化阈值 B=im2bw(A,thresh);%对图像二值化...
  • MATLAB图像处理

    万人学习 2018-10-22 21:38:06
    全面系统的学习MATLAB图像处理中的应用
  • MATLAB数字图像处理(一)图像的基本操作

    万次阅读 多人点赞 2018-04-18 16:05:12
    写在前头:说到数字图像处理,不得不提起MATLAB。这是一款非常方便的仿真软件,绝大多数的图像处理可以用MATLAB完成。  有人问,处理图片,用PS岂不是更好。两者各有优点,如果需要将10000幅图片转换成灰度...
  • MATLAB 编写GUI进行图像处理

    万次阅读 多人点赞 2018-06-29 10:14:03
    GUI,即图形用户接口,是MATLAB的可视化操作功能,本文编写一个简单GUI进行图像处理。1、新建GUI文件,点击file->new->GUI如下图所示点击GUI后出现如下图界面,默认为Blank GUI (Default)选项,点击OK...
  • matlab灰度化、二值化处理图像

    万次阅读 多人点赞 2018-12-04 21:04:03
    matlab文字识别提取: 1.图像转换为数字矩阵 将图像读取为一个矩阵 data = imread('C:\Users\10378\Desktop\学习\test\test.jpg');   2.灰度化处理 rgb2gray :通过消除图像色调和饱和度信息同时保留亮度...
  • Matlab图像二值化

    万次阅读 热门讨论 2017-03-23 21:17:30
    在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像
  • 消除图像处理中的光照不均(matlab版)

    万次阅读 多人点赞 2020-04-26 18:12:15
    3.原始图像减去光照图,得到最终结果一个栗子针对matlab中自带的rice.png图。我们希望能够把大米和背景区分开来,直观的做法是用阈值分割来做成二值图,再对联通区域进行标记,这样就能知道每个大米的大小和中心位置...
  • Matlab实现批量处理图像的两种方法

    万次阅读 2017-01-03 09:02:51
    基本上有两个方法:一个是将你的图像统一进行一次重命名如:1.jpg,2.jpg等,然后利用for循环依次进行处理即可,如下面的语句:假设你的图像共有20副: str='D:\做差\好的图像\';...%在此处进行你的图像处理即可
  • matlab图像进行二值化处理 >>m = imread('d:\image\logo.jpg'); >> imshow(n); >> n = graythresh(data); >> im2bw(m,n); 用matlab图像灰度化处理 data = imread('d:\image\photo....
  • matlab 图像的平滑和锐化

    万次阅读 2016-11-21 22:54:39
    1.读入一幅图像,分别采用均值和高斯滤波器对图像进行平滑处理>> clear all; >> sample = imread('sample.jpg'); >> mean3Sample = filter2(fspecial('average',3),sample)/255; >> mean5Sample = filter2(fspecial...
  • MATLAB图像进行量化处理

    万次阅读 2017-02-27 18:11:28
    MATLAB图像进行量化处理 一、实验目的:掌握量化原理 二、实验内容:试对lenagray.jpg图像分别量化为64级灰度图像、32级灰度图像、8级灰度图像和4级灰度图像,观察图像质量的变化 第一幅图是原图,...
  • 这里采用matlab软件来对图像进行批量处理。待处理图像如图1所示: 在本项目中,采用了Sobel边缘检测算子进行指纹的提取,通过膨胀腐蚀去除了部分面积较小的雾点,以第20号图即这里的待处理图像(4)为例得到图a即...
  • 包含MATLAB代码实现《数字图像处理(MATLAB版)》是把图像处理基础理论论述软件实践方法相结合的第一本书,它集成了冈萨雷斯和伍兹所著的《数字图像处理》一书中的重要内容和MathWorks公司的图像处理工具箱。...
  • 数字图像处理:基于MATLAB的车牌识别项目

    万次阅读 多人点赞 2017-07-30 13:48:54
    学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧。前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码。今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码。这里没有使用神经...
1 2 3 4 5 ... 20
收藏数 47,000
精华内容 18,800
关键字:

matlab与图像处理