Matlab图像处理基本函数

一、学习

1、图像的读取、显示。

%读取
a=imread('1.jpg');
%显示
imshow(a);

2、imfinfo函数用于显示图像的详细信息,size函数显示图像尺寸大小。
3、title给图像加标题。
4、subplot把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。

suplot(2,2,1);%把图像分成2*2的小窗口,第三个数字1是表示第一块。
suplot(2,2,2);%把图像分成2*2的小窗口,第三个数字2是表示第二块。

5、彩色图像变换为灰度图像。

a=imread('1.jpg');
b = rgb2gray(a);

6、通过阈值化方法把图像转换为二值图像。

a=im2bw(b);

7、imadjust 函数用于数字图像的灰度或颜色调整。

二、实践

1、读入一幅彩色图像,把彩色图像变换为灰度图像和二值图像,并在同一个窗口内利用子窗口方式来显示彩色图像、灰度图像和黑白图像,对每一幅图像标注文字标题。
在这里插入图片描述

>> a=imread('1.jpg');%读入图像
>> subplot(3,1,1);%划分窗口
>> imshow(a) 
>> title('原图');
>> b=rgb2gray(a);%转化成为灰度图像
>> subplot(3,1,2)
>> imshow(b) 
>> title('灰度图像');
>> c=im2bw(a); %转化成二值图像
>> subplot(3,1,3) 
>> imshow(c) 
>> title('二值图像');

2、读入一幅彩色图片,利用 imfinfo 函数显示其详细信息,利用 size()函数显示其尺寸大小,并和 imfinfo
显示的结果进行对照。

>> imfinfo 1.jpg

ans = 

           Filename: '1.jpg'
        FileModDate: '17-3月-2021 14:51:12'
           FileSize: 24675
             Format: 'jpg'
      FormatVersion: ''
              Width: 1200
             Height: 800
           BitDepth: 24
          ColorType: 'truecolor'
    FormatSignature: ''
    NumberOfSamples: 3
       CodingMethod: 'Huffman'
      CodingProcess: 'Sequential'
            Comment: {}

>> size('1.jpg')

ans =

     1     5

3、读入一幅图片,首先转换为灰度图像,然后利用 double 和 uint8 数据类型转换函数将图像的数据类
型进行转换,并显示转换后的结果,并分析结果出现的原因。
在这里插入图片描述

>> a=imread('1.jpg');
>> b=rgb2gray(a);
>> subplot(1,2,1)
>> c=double(b);
>> imshow(c);
>> title('Double类型数据');
>> d=uint8(b);
>> subplot(1,2,2)
>> imshow(d);
>> title('uint8类型数据');

4、首先将一幅彩色图像变为一幅灰度图像,然后对其进行线性灰度变换,s=T®=a*r+b,其中 S 是变换后图像的像素值,r 是原图像的像素值。分别给出六种情况的变换图像,并予以标题标注。
在这里插入图片描述

>> %灰度图像线性灰度变换
>> a=imread('1.jpg');
>> b=rgb2gray(a);
>> [oriHist,oriX] = imhist(b);
>> 
>>%以下是六幅图像的变化参数
>> %m=1,n=0
>> m=1;
>> n=0;
>> gray1=b*m+n;
>> [g1Hist,g1X]=imhist(gray1);
>> 
>> %m=1;n=40
>> m=1;
>> n=40;
>> gray2=b*m+n;
>> [g2Hist,g2X]=imhist(gray2);
>> 
>> %m=1,n=-40;
>> m=1;
>> n=-40;
>> gray3=b*m+n;
>> [g3Hist,g3X]=imhist(gray3);
>> 
>> %m=1.5,n=0
>> m=1.5;
>> n=0;
>> gray4=b*m+n;
>> [g4Hist,g4X]=imhist(gray4);
>> 
>> %m=0.6,n=0
>> m=0.6;
>> n=0;
>> gray5=b*m+n;
>> [g5Hist,g5X]=imhist(gray5);
>> 
>> %m=-1,n=0
>> m=-1;
>> n=0;
>> gray6=b*m+n;
>> [g6Hist,g6X]=imhist(gray6);
>> 
>>%显示出来 
>> subplot(2,4,1);
>> imshow(a);
>> title('彩色图像');
>> subplot(2,4,2);
>> imshow(b);
>> title('灰度图像');
>> subplot(2,4,3);
>> imshow(gray1);
>> title('不变a=1,b=0');
>> subplot(2,4,4);
>> imshow(gray2);
>> title('整体变亮a=1,b=40');
>> subplot(2,4,5);
>> imshow(gray3);
>> title('整体变暗a=1,b=-40');
>> subplot(2,4,6);
>> imshow(gray4);
>> title('提高对比度a=1.5');
>> subplot(2,4,7);
>> imshow(gray5);
>> title('降低对比度a=0.6');
>> subplot(2,4,8);
>> imshow(gray6);
>> title('负片a=-1');

5、读入一幅彩色图像,首先将其转换为灰度图像,然后对其分段线性变换。
在这里插入图片描述
在这里插入图片描述

function [ b ] = Change( Image,fa,fb,ga,gb )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here
x = imread('1.jpg'); 
[m,n,c] = size(x);  
if(c>1)
    a=rgb2gray(x);
end
b=zeros(m,n);
a = double(a);  
k1 = ga/fa;     
k2 = (gb-ga)/(fb-fa);
k3 = (255-gb)/(255-fb);
for i=1:m
    for j=1:n
        if a(i,j)<fa
            b(i,j) = k1*a(i,j);
        elseif a(i,j)<fb
            b(i,j) = k2*(a(i,j)-fa)+ga;
        else
            b(i,j) = k3*(a(i,j)-fb)+gb;
        end
    end
end
b = uint8(b);  
end
 
 

>>fa = 80;fb = 120;
>>ga = 50;gb = 200;
>>Image='1.jpg';
>> b=Change(Image,fa,fb,ga,gb);
>> subplot(1,2,1);
>> imshow(Image);
>> title('原图');
>> subplot(1,2,2);
>> imshow(b);
>> title('变换后的图像');

6、读取一幅图像,利用 imadjust 函数对其进行灰度变化,实现图像整体变亮、整体变暗,在同一个窗口内分别显示,并标注文字标题。
在这里插入图片描述

>> a=imread('1.jpg');
>> subplot(1,3,1);
>> imshow(a);
>> title('原图像');
>> b=imadjust(a,[0 1],[0.5 0.75]);
>> c=imadjust(a,[],[],0.6);
>> subplot(1,3,2);
>> imshow(b);
>> title('图像变暗');
>> subplot(1,3,3);
>> imshow(c);
>> title('图像变亮');
  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值