• matlab里的图像处理函数 2019-02-19 15:56:54
    一、imfinfo函数——查看图像文件信息,注意参数是文件路径和文件名,不是图像对应的矩阵。 >> imfinfo('C:\Users\zhulf\Desktop\1.jpg') ans =   Filename: 'C:\Users\zhulf\Desktop\1.jpg'  ...

    一、imfinfo函数——查看图像文件信息,注意参数是文件路径和文件名,不是图像对应的矩阵

    >> imfinfo('C:\Users\zhulf\Desktop\1.jpg')

    ans = 


               Filename: 'C:\Users\zhulf\Desktop\1.jpg'
            FileModDate: '19-Apr-2015 08:40:54'
               FileSize: 1528413
                 Format: 'jpg'
          FormatVersion: ''
                  Width: 1548
                 Height: 1548
               BitDepth: 24
              ColorType: 'truecolor'
        FormatSignature: ''
        NumberOfSamples: 3
           CodingMethod: 'Huffman'
          CodingProcess: 'Sequential'
                Comment: {}
                   Make: 'Smartisan'
                  Model: 'Smartisan T1'
            Orientation: 0
               DateTime: '2015:04:19 08:40:53'
          DigitalCamera: [1x1 struct]
                GPSInfo: [1x1 struct]
           MeteringMode: 'unknown'
            LightSource: 'unknown'
                  Flash: 16

    二、imshow函数

    1、imshow(I)  显示图像I

    Matlab代码:

    >> I=imread('2.jpg');

    >> imshow(I)

     

    显示结果

     

    2、imshow(I,[low high])  它显示的是像素处理后的图像I,注意的是它只是显示的时候改变了图像像素,实际上并没有改变图像像素,图像像素值还是原来的值。

    Matlab代码:

    >> I=imread('2.jpg');

    >> imshow(I,[0 80])

     

     

     

    它对图像像素的处理是:将I中像素值大于等于high变成high,将小于等于low的变成low,再将[low,high]中间的像素映射为默认的像素级一般为[0,255]

    我们把上述描述转为代码:

    I=imread('2.jpg');

    mmax=max(I(:));

    mmin=min(I(:));

    for i=1:256

        for j=1:256

            if I2(i,j)<=0 I2(i,j)=0;

            elseif I2(i,j)>=80

                I2(i,j)=255;

            end

        end

    end

    I3=I2;

    for i=1:256

        for j=1:256

            I3(i,j)=255/80*I3(i,j);

        end

    end

    imshow(I3)

    显示图像结果为

     

     

     

    和imshow(I,[0 80])效果是一样的。

    3、 imshow(I,[ ])  它等同于imshow(I,[min(I:),max(I:)]),可以理解为把图像I转化成0-255灰度级来显示。

    我们在这里做一个实验:下面三幅图分别为imshow(I),imshow(I,[])和把图像像素值映射为[0,255]所显示的图像。

     

     

     

     

     

    我们发现,imshow(i,[])显示的效果正和把像素值映射为[0,255]效果所显示的一样。

    Matlab代码如下:

    A=imread('C:\Users\zhulf\Desktop\Image1 - SliceImage - 008.tif');

    mmax=max(A(:));

    mmin=min(A(:));

    for i=1:4096

        for j=1:4096

            

          A2(i,j)=1.0*255/(mmax-mmin)*(A(i,j)-mmin);

        end

    end

    imshow(A)

    figure,imshow(A,[])

    figure,imshow(A2)

     

     

    再例如,一个灰度级为17-2424的int16类型的图像,matlab显示(imshow(I))效果如下,

     

     

     

     

    可见,显示效果并不好,接下来我们使用imshow(I,[]),显示结果如下:

     

     

     

    显示结果较好,对比度较高。同样,imshow(I,[])的效果等同于把像素映射到0-255灰度级,映射后图像如下:

     

     

     

    实现灰度映射的Matlab如下:

    A=dicomread('C:\Users\zhulf\Desktop\IM62.dcm');

    mmax=double(max(A(:)));  %类型转换很重要

    mmin=double(min(A(:)));  %类型转换很重要

     

    for i=1:512

        for j=1:512

            tmp=double(A(i,j));  %类型转换很重要

            A2(i,j)=uint8(255*(tmp-17)/2407);  %类型转换很重要

        end

    end

    imshow(A)

    figure,imshow(A,[])

    figure,imshow(A2)

     

    上面是对imshow()函数的理解,不明白的欢迎留言交流。

     

    三、rgb2gray 将彩色图像转换为灰度图像

    >> A=imread('C:\Users\zhulf\Desktop\1.jpg');
    >> B=rgb2gray(A);
    >> imshow(A)

     

    >> figure,imshow(B)

     

    四、数据类型转换函数

    im2uint8  将图像转换为uint8类,相应的像素值也会变化到相应范围,如对uint16类图像应用im2uint8,则像素值由0-65535变化成0-255,这是一种线性映射。

    im2uint16 将图像转换为uint16类,也有上面如此的性质。

    im2double 将图像转化为double类,必要时缩放像素值。如果图像img是double型的,d=img;如果图像是logical或single型图像,d=double(img);如果图像是uint8型,d=double(img)/255;如果图像是uint16型,d=double(img)/65535。

    im2double一般会将uint8归一化到[0,1],而double只是将数据变为double,如:

    a = uint8(250);
    b = double(a)
    c = im2double(a)


    b =


       250




    c =


        0.9804

     

    im2single 将图像转化为single类,性质和im2single类似。

     

    mat2gray 可以将图像转换为标定[0,1]范围的double类的图像。

    调用的语法是:

    g=mat2gray(A,[Amin,Amax]),其中g具有0(黑)到1(白)的值。参数Amin使得A中小于Amin的值,在g中变为0;而在A中大于Amax的值,在g中变为1。

    也可以是:

    g=mat2gray(A),

    Amin,Amax默认为A中实际的最大值和最小值,它独立于输入的类,将整个输入值的范围标定为[0,1]。

    >> f=[1 2;3 4]


    f =


         1     2
         3     4


    >> g=mat2gray(f)


    g =


             0    0.3333
        0.6667    1.0000

     BW = im2bw(I,LEVEL)   二值化图像,将大于LEVEL的像素值变为1,小于LEVEL的像素值变为0,且图像像素变成逻辑类;LEVEL是阈值,在[0,1]之间。

    >> gb=im2bw(g,0.6)


    gb =


         0     0
         1     1

    >> gbv=islogical(gb)


    gbv =


         1

    五、whos 

    B为图像矩阵

    >> whos B
      Name         Size                Bytes  Class    Attributes


      B         1548x1548            2396304  uint8     

    六、反转图像

    >> I=imread('C:\Users\zhulf\Desktop\2.jpg');

    >> imshow(I)

     

    上下翻转:

    >>I2=I(end:-1:1,:);

    >> figure,imshow(I2)

     

    上下左右均反转:

    >> I3=I(end:-1:1,end:-1:1);
    >> figure,imshow(I3)

     

    七、抽取图像(压缩图像)

    >> I4=I(520:855,90:837);
    >> figure,imshow(I4)

    图像也由原来的1548 x 1548变成了336 x 748。

     

    >> I5=I(1:2:end,1:2:end);
    >> figure,imshow(I5)

    图像由1548 x 1548 变成了774 x 774,filesize由99745变成了76747,做了部分压缩,但清晰度差不多。

    八、improd()函数

    function[p,pmax,pmin,pn]=improd(f,g) 
    %IMPROD Computes the produce of two images. 
    %[P,PMAX,PMIN,PN]=IMPROD(F,G) outputs the element-by-element 
    %product of two input images,F and G,the product 
    %maximum and minimum values,and a normalized product array with 
    %values in the rang[0,1].The input images must be of the same 
    %size.They can be of class uint8,uint16,or double. The outputs 
    %are of class double. 
    fd=double(f); 
    gd=double(g); 
    p=fd.*gd; 
    pmax=max(p(:)); 
    pmin=min(p(:)); 
    pn=mat2gray(p); 

     

    >> [p,pmax,pmin,pn]=improd(f,g)


    p =


         1     4
         6     4




    pmax =


         6




    pmin =


         1




    pn =


             0    0.6000
        1.0000    0.6000

    之后陆续补充。。

    展开全文
  • matlab数字图像处理实验 2018-01-08 23:46:15
    计算机图像处理实验课1-9,看完本课程可以让你matlab技能小小进步,对图像处理稍微了解。、 (一)matlab数字图像处理实验-guide的简单使用教程 (二)matlab数字图像处理实验-图像的几何变换 (三)matlab数字...
  • 写在前头:说到数字图像处理,不得不提起MATLAB。这是一款非常方便的仿真软件,绝大多数的图像处理可以用MATLAB完成。  有人问,处理图片,用PS岂不是更好。两者各有优点,如果需要将10000幅图片转换成灰度...
  • 经过上一篇文章的《matlab GUI图像图像基础》,我们可以知道说是入门了GUI,对于GUI图像图形还可以调用函数形成,但是对于学习图像处理来说,感觉没有那个必要去学,会了基础,就可以自己GUI图像处理功能了,主要...
  • matlab 图像处理入门 2018-10-15 16:25:02
    1、图像数据的读入 [x,map]=imread(filename,'image format') x=imread(filename,'image format') %map为双精度浮点数(Double)其值为0~1表示图像的颜色值 2、写入 imwrite(x,filename,'image format') ...
  • 第一章 matlab图像处理编程基础之读取和写入文件 1.优化小技巧:提前分配矩阵内存 如memo=zeros(1024,128),这条语句用于构造一个元素全为零的矩阵,但同时也很自然地分配一块足够大的空间。 2.M文件的不能命名为...
  • MATLAB图像处理 2018-10-22 21:38:06
    全面系统的学习MATLAB图像处理中的应用
  • 准备学习做图像处理,首先要对图像处理里的一些基本概念有一定的了解,不然不论是Verilog还是MATLAB代码实现没有任何意义,因此总结一些有关图像处理的基本知识。数字图像处理又称为计算机图像处理,它是指将图像...
  • 基于Matlab图像处理GUI 2017-04-11 08:37:37
    整理电脑时,发现了本科时的一个matlab GUI,关于图像处理的一些基本操作,里面有挺多功能的,看下面的图片。 图像类型转化,几何运算,图像变换,添加噪声,图像复原,图像增强,图像分割,形态学处理,小波变换...
  • MATLAB具有丰富的图像处理函数库,运算速度慢,特别是在多重循环的情况下,不适合直接应用于工程当中。如果能把MATLAB和另一种适合工程的编程语言结合到一起运用到数字图像处理领域,则会更加方便的进行图像处理,...
  • 由于这段时间在一个图像处理与三维重建的项目,其中数字图像处理的知识是必不可少的,学习matlab也有一段时间了,所以现在抽点时间将这段时间所学的东西个小总结,加深理解的同时也方便以后有需要时可以查看一下...
  • 原文地址:Matlab图像处理函数汇总 作者:mimi 图像的变换  ① fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif'); j=fft2(i); ②ifft2::ifft2函数用于数字图像的二维傅立叶反变换,如...
  • matlab数字图像处理实验 1、什么是平滑处理?  首先明白几个名词:  (1)噪声:图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。 1.高斯噪声:高斯噪声是指它的概率密度函数服从高斯分布(即正态...
  • 标准图像显示技术特殊图象显示技术 图像运算 代数运算空间变换图像配准 图像数据变换 二维傅立叶 离散余弦 其他变换  1)radon变换: 2)fanbeam变换:   图像分析与增强 像素值及统计 1) 2)improf
  • GUI,即图形用户接口,是MATLAB的可视化操作功能,本文编写一个简单GUI进行图像处理。1、新建GUI文件,点击file-&gt;new-&gt;GUI如下图所示点击GUI后出现如下图界面,默认为Blank GUI (Default)选项,点击OK...
  • matlab 数字图像处理GUI设计。
  • 今天发现了matlab图像处理工具箱的强大之处, 任务缘由: 需要对图像进行批处理改变尺寸 一般遇到这种任务,我们往往都会写matlab代码进行批量操作 但是matlab有自带的很强大的图像处理工具箱,  图片批处理...
  • 图像处理MATLAB
  • (注:本文代码大部分可从《数字图像处理 第三版》中找到)使用软件:MATLAB R2018a学习前提:了解matlab的GUI界面的每个按钮参考资料:《数字图像处理 第三版》,CSDN博客使用初音图片P站画师uid:1589657。...
  • 1.1 MATLAB图像处理基本操作 本文中对于大多数的操作,是对数字图像处理领域中最为著名的“lena”图片进行操作的。原图如下(Figure 1):  Figure 1 首先,在MATLAB中显示这幅图片: I=imread('lena.jpg')...
1 2 3 4 5 ... 20
收藏数 50,856
精华内容 20,342