基于matlab的图像处理案例教程_matlab gui图像处理

基于matlab的图像处理案例教程_matlab gui图像处理一、imfinfo函数——查看图像文件信息,注意参数是文件路径和文件名,不是图像对应的矩阵。imfinfo(‘C:\Users\zhulf\Desktop\1.jpg’)ans=Filename:’C:\Users\zhulf\Desktop\1.jpg’FileModDate:’19-Apr-201508:40:54′

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、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)

六、反转图像

 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,做了部分压缩,但清晰度差不多。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185865.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jdk1.8下载与安装教程(win10)超详细[通俗易懂]

    jdk1.8下载与安装教程(win10)超详细[通俗易懂]一、前言虽然现在jdk已经升级到JDK11版本了,但是JDK1.8(JDK8)仍然有很多小伙伴在使用,这里也记录一下jdk1.8的下载及安装过程,对于刚学习java的小伙伴可以参考,熟手可忽略,呵呵~二、下载安装步骤一、首先是去jdk官网下载,如果大家不怕麻烦的话可以去官网下载,需要注册账号,此外下载速度也是龟速,我也是花了好长时间才下载下来,大家可以可以点击我的网盘目录jdk目录下载…

    2022年6月14日
  • 一阶惯性滤波电路图_matlab比例微分环节

    一阶惯性滤波电路图_matlab比例微分环节MATLAB中进行软件滤波仿真我身边有些朋友说现在在学校学习什么拉氏变换,Z变换,傅立叶变换没有用,传递函数没有用,差分方程没有用,只是纸上谈兵,我这里先就传递函数和拉氏变换和差分方程介绍几点不自量力的看法,我们学习拉氏变换主要是为了从脱离时域,因为时域分析有它的难度指数,我们从时域映射到S域,目的只有一个,那就是简化计算,正如我们在时域要计算卷积过来,卷积过去,我们把它映射到S域过后,就是乘积过…

    2022年9月27日
  • CreatePipe匿名管道通信

    CreatePipe匿名管道通信管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,另一进程就可以从管道的另一端将其读取出来。匿名管道(AnonymousPipes)是在父进程和子进程间单向传输数据的一种未命名的管道,只能在本地计算机中使用,而不可用于网络间的通信。      匿名管道实施细则      匿名管道由Cre

    2022年7月26日
  • Java中super()的使用[通俗易懂]

    Java中super()的使用[通俗易懂]目录1.super()的使用实例一一一子类重写父类的方法2.super()的使用实例一一一子类重写父类的变量3.super()的使用实例一一一在子类的构造方法中4.关于构造方法中super()第一种情况:编译不通过第二种情况:编译不通过第三种情况:成功编译通过1.super()的使用实例一一一子类重写父类的方法publicclassA{…

    2022年6月11日
  • OutputStreamWriter的基本使用[通俗易懂]

    OutputStreamWriter的基本使用[通俗易懂]所有基于Writer类和Reader类的IO流都是字符流,字符流是高级流,必须基于字节流来构建OutputStreamWriter主要方法write(intn)write(Stringstr)write(Stringstr,intoffset,intlen)write(char[]cbuf)write(char[]cbuf,intoffset,intlen)举个栗子packagecom.wondream.myframework.app.basic

    2022年9月11日
  • 数据库中的左连接和右连接的区别是什么_左连接右连接内连接图解

    数据库中的左连接和右连接的区别是什么_左连接右连接内连接图解数据库中的左连接和右连接的区别今天,别人问我一个问题:数据库中的左连接和右连接有什么区别?如果有A,B两张表,A表有3条数据,B表有4条数据,通过左连接和右连接,查询出的数据条数最少是多少条?最多是多少条?我被这个问题问住了,后来我去问了数据库开发人员,问到的答案也是各种各样:a最大12最小0b最大12最小未知c…

    2022年9月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号