Matlab学习6-图像处理之直方图处理、灰度变换

1、直方图均衡化

代码

%直方图均衡化
img=imread("img\rice.png");

%显示
subplot(2,2,1),imshow(img),xlabel("原图");
subplot(2,2,2),imhist(img),xlabel("原图的灰度直方图");
% 均衡化直方图转换
J=histeq(img);
subplot(2,2,3),imshow(J),xlabel("均衡化后的图像");
subplot(2,2,4),imhist(J),xlabel("均衡化后的图像灰度直方图");

2、直方图规定化

效果
在这里插入图片描述

代码

% 直方图规定化。
img=imread("test1.png");
subplot(2,3,1),imshow(img),xlabel('(a)原始图像');
subplot(2,3,2),imhist(img),xlabel('(b)原始图像的灰度统计直方图','position',[90,-160]);

%规定化为只有2个灰度级
Ju=histeq(img,2);
subplot(2,3,3),imshow(Ju),xlabel('(c)规定化为2个灰度级');
subplot(2,3,4),imhist(Ju),xlabel('(d)2个灰度级的灰度统计直方图','position',[90,-560]);

%规定化为只有10个灰度级
K=histeq(img,210);
subplot(2,3,5),imshow(K),xlabel('(e)规定化为10个灰度级');
subplot(2,3,6),imhist(K),xlabel('(f)10个灰度级的灰度统计直方图','position',[90,-560]);

3、直接正比例变换

效果
在这里插入图片描述

代码

% 直接正比例变换。
img=imread("rice.png");
subplot(3,3,1),imshow(img),xlabel('原始图像');
subplot(3,3,2),imhist(img);

%方法一系统函数
ju=imadjust(img,[40/255 204/255],[0 1]);%图像的最小灰度值为40,最大灰度值为204
subplot(3,3,4),imshow(ju),ylabel('变换图像(方法一)');
subplot(3,3,5),imhist(ju);

%方法二编程实现
%把灰度值范围从[40,204]映射到[0,255]
f0=0;g0=0;      %分段曲线的第1个点
f1=40;g1=0;     %分段曲线的第2个点
f2=204;g2=255;  %分段曲线的第3个点
f3=255;g3=255;  %分段曲线的第4个点
subplot(3,3,9),plot([f0,f1,f2,f3],[g0,g1,g2,g3]),xlabel("f"),ylabel('g'),axis([0 255 0 255]);

%绘制变换曲线
r1=(g1-g0)/(f1-f0); %曲线1的斜率
b1=g0-r1*f0;        %曲线1的截距
r2=(g2-g1)/(f2-f1); %曲线2的斜率
b2=g1-r2*f1;        %曲线2的截距
r3=(g3-g2)/(f3-f2); %曲线3的斜率
b3=g2-r3*f2;        %曲线3的截距

[m,n]=size(img);
K=double(img);
for i=1:m
    for j=1:n
        f=K(i,j);
        g(i,j)=0;
        if (f>=f0)&(f<=f1)
            g(i,j)=r1*f+b1;         %曲线1的方程y=r1*x+b1
        else
            if (f>=f1)&(f<=f2)
                g(i,j)=r2*f+b2;     %曲线2的方程y=r2*x+b2
            else
                if (f>=f2)&(f<=f3)
                    g(i,j)=r3*f+b3; %曲线3的方程y=r3*x+b3
                end
            end
            
        end
    end
end
subplot(3,3,7),imshow(uint8(g)),ylabel('变换图像(方法二)');
subplot(3,3,8),imhist(uint8(g));

4、截取式正比例变换

效果
在这里插入图片描述

代码

% 截取式正比例变换。
img=imread("rice.png");
subplot(3,3,1),imshow(img),ylabel('原始图像');
subplot(3,3,2),imhist(img);

%方法一系统函数
%把灰度值范围从[80,160]映射到[20,220],灰度值小于80的映射为20,灰度值大于160映射为220
ju=imadjust(img,[80/255 160/255],[20/255 220/255]);
subplot(3,3,4),imshow(ju),ylabel('变换图像(方法一)');
subplot(3,3,5),imhist(ju);

5、对数变换

效果
在这里插入图片描述

代码

% 对数变换。
img=imread("rice.png");
subplot(3,3,1),imshow(img),ylabel('原始图像');
subplot(3,3,2),imhist(img);

%对数变换
c=255/log(1+255);
x=0:1:255;
y=c*log(1+x);
subplot(3,3,6),plot(x,y),axis tight,xlabel("f"),ylabel("g");
%绘制变换曲线
[m,n]=size(img);
K=double(img);

g=c*log(K+1);
subplot(3,3,4),imshow(uint8(g)),ylabel('对数变换');
subplot(3,3,5),imhist(uint8(g));

%系统函数调用
ju=imadjust(img,[],[],0.216);
subplot(3,3,7),imshow(ju),ylabel("对数变换(系统调用)");
subplot(3,3,8),imhist(img);

点击源码素材

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: MATLAB是科学和工程计算领域最为流行的软件之一,因为它提供了大量的工具箱和函数库使得开发者能够快速地完成图片或其它类型的处理MATLAB的一个重要特点就是提供可视化的设计界面,也可以利用一些简单的代码对不同数据或者图像提供需要的操作。 在我们这个问题中,MATLAB的app源码包含图像处理中的直方图均衡,几何变换以及加噪滤波。这些都是当下广泛使用的图像处理方法。 直方图均衡(Histogram Equalization)是通过调整像素灰度值分布来增加图像对比度的方法。在代码中,可以设定不同的参数来使得直方图均衡化更加合适和符合实际需要。 几何变换(Geometric Transformations)包括旋转、缩放、平移、拉伸和翻转等等。这个功能的使用很方便,我们可以通过app界面实现所需要的像素变换。 加噪滤波(Noise Filtering)指的是通过滤波消除噪音的过程。噪声可以出现在任何图像中,造成图像失真和质量不佳。用户可以手动设置需要消除的噪声类型,如加性高斯噪声或椒盐噪声,等等。 总的来说,使用MATLAB的app开发源码进行图像处理是十分方便和快捷的。它提供了大量的功能和处理方法,使得用户可以更加容易地进行图像处理。也可以根据不同的需求开发自己的新的图像处理方法。 ### 回答2: MATLAB是一种强大的数学计算和编程环境,广泛用于工程、科学和数据分析。MATLAB的应用程序(App)是一种交互式工具,能够提供易于使用的界面,以便用户可以使用自己的数据进行各种操作。在MATLAB中进行图像处理是一项常见任务。其中,直方图均衡、几何变换和加噪滤波是图像处理中常用的技术。 直方图均衡是一种图像增强技术,其基本原理是在整个图像的灰度分布中增加对比度。直方图均衡可以通过增加像素灰度值的动态范围,来改善图像的视觉效果。可以通过MATLAB App来实现直方图均衡,需要使用一些基本的图像处理函数,如imread、histeq和imshow。 几何变换是改变图像形状和大小的技术,其可应用于图像缩放、旋转、裁切和反转等。MATLAB提供了很多用于几何变换的函数,如imresize、imrotate、imcrop和flipud。在MATLAB App中执行几何变换操作需要使用这些函数之一,为用户提供可控参数,以便在图像变换过程中对所需的几何变换面板进行调整。 加噪滤波是对图像中存在的影响信号进行处理的一种技术。从不同噪声模型到各种滤波器,MATLAB为各种噪声处理任务提供了一套内置的函数。在MATLAB App中执行加噪滤波操作需要使用一些基本的图像处理函数,如imread、imnoise和imshow,并根据用户所需的噪声类型和滤波器类型进行调整。 总而言之,三种图像处理技术都非常重要,同时也非常常用。MATLAB App为用户提供了方便的交互界面,以便更快速地执行这些操作,进而提高图像处理的效率和准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHengYuP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值