图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化

时间:2021-02-18 09:44:49

  今天,我们学习了直方图。于是乎,回来我就用matlab代码实现一下。昨天受到道路检测老师课上一个内容的影响(对于道路裂缝的检测,我突发奇想,如果对于道路图像进行操作,是否能够让裂缝与道路分离,使得图像经过预处理以后在检测过程中能更加直观),于是所用图片是与道路裂缝有关的。(但是发现效果似乎很shi...)

  结合上节课的图像点运算。今天的代码都将会囊括进来!

 

  点运算,是用于改变图像灰度范围以及分布的一种运算,原图像与生成图像之间相应的像素值之间满足某种函数关系。可以是线性变换的,也可以是非线性变换的。不过由于点运算提供的是点对点的运算,故其不改变各个点之间的空间位置分布关系。

  在进行代码部分之前,我们先通过ps的直方图曲线,来最最最直观的了解直方图的存在。 

图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化

图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化

图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化

 

 以下是今天的第一段代码:

  一、线性点运算

clc; 
clear all;
    a=imread('2.jpg');
    a1=a+30;%%图像灰度值增加30
    a2=2*a;%%图像对比度增加1.5倍
    a3=0.5*a;%%图像对比度减少为原来的0.5倍
    subplot(2,2,1);imshow(a);title('原始图像');
    subplot(2,2,2);imshow(a1);title('灰度值增加图像');
    subplot(2,2,3);imshow(a2);title('对比度增加图像(a>1)');
    subplot(2,2,4);imshow(a3);title('对比度减少图像(a<1)');

 

  以下为运行结果:  

图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化

 

  二、非线性点运算:

clc;
clear all;
a=imread('2.jpg');
subplot(1,3,1);imshow(a);title('原始图像');
    
x=1:255;
y=255./(1+5*exp(-(x-127)));%%绘制曲线图%%
subplot(1,3,2);plot(x,y);title('函数曲线图');b=255./(1+5*exp(-double(a-127)));
subplot(1,3,3);imshow(uint8(b));title('非线性点运算处理图像');

  代码运行结果:

图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化

 

  三、点运算过程,直方图的改变情况:

clc;
clear all;
a=imread('2.jpg');%              直方图对于二维有效,三维imhist会出错
a1=rgb2gray(a);

subplot(2,2,1);imhist(a1);title('原始图像')
b=2*double(a1)-210;%%对直方图进行变换%%
subplot(2,2,2);imhist(uint8(b));title('变换后的图像');
subplot(2,2,3);imshow(a1);title('原图');
subplot(2,2,4);imshow(b);title('变化以后');

  代码运行结果:

图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化

 

  四、直方图均衡化

  最后,本想一探究竟直方图均衡化是一个怎样过程的时候,翻阅资料发现仅仅histeq()函数[1]一行就可以搞定。所以,我下来还会继续研究研究具体原理,这里我们看一下直方图均衡化的运行效果!注意,histeq函数不能用于rgb格式,因此要将rgb图像事先转化成灰度图像。

a=imread('2.jpg');
b=rgb2gray(a);
%b=2*double(b)-210;
subplot(2,2,1);imshow(b);title('原始图像');
subplot(2,2,2);imhist(b);title('原始图像直方图');
b1=histeq(b);
subplot(2,2,3);imshow(b1);title('直方图均衡化后图像');
subplot(2,2,4);imhist(b1);title('均衡化后图像直方图');

  运行结果:

图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化

 

特别鸣谢:

  Q姓学妹 ????

 

参考文献:

[1] https://jingyan.baidu.com/article/4e5b3e19191ccf91911e247c.html

 

2019-03-06

21:29:29