matlab图像点运算 对比度增强 对比度拉伸 灰度变换

原创 2018年04月15日 12:08:56

点运算又称为对比度增强、对比度拉伸或灰度变换,是一种通过图像中的每一个像素值进行运算的图像处理方式。。它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅有对应的输入像素点的灰度值决定,运算结果不会改变图像内像素点之间的空间关系。其运算的数学关系式如下:

其中,A(x,y)表示原图像,B(x,y)表示经过点运算处理后的图像,f表示点运算的关系函数。按照灰度变换的数学关系,点运算可以分为线性灰度变换、分段线性灰度变换和非线性灰度变换3种。接下来我们分别举例实现。

1. 线性灰度变换

假定原图像A(x,y)的灰度变换范围为[a,b],处理后的图像B(x,y)的灰度变换范围为[c,d],线性灰度变换运算的数学表达式为:

在MATLAB图像处理工具箱中提供了一个灰度线性变换函数imadjust()

close all;clear all;clc;
%通过函数imadjust()对图像进行线性灰度变换
gamma=0.5;  %设定调整线性度取值
I=imread('F:/pao1.jpg');
R=I;  %将图像数据赋值给R
R(:,:,2)=0;  %将原图像变成单色图像,保留红色
R(:,:,3)=0;
R1=imadjust(R,[0.5 0.8],[0 1],gamma);  %利用函数imajust()调整R的灰度,结果返回R1
G=I;
G(:,:,1)=0;  %将原图像变成单色图像,保留绿色
G(:,:,3)=0;
G1=imadjust(G,[0 0.3],[0 1],gamma);  %利用函数imajust()调整G的灰度,结果返回G1
B=I;
B(:,:,1)=0;  %将原图像变成单色图像,保留蓝色
B(:,:,2)=0;
B1=imadjust(B,[0 0.3],[0 1],gamma);  %利用函数imajust()调整B的灰度,结果返回B1
I1=R1+G1+B1;  %求变换后的RGB图像
figure,
subplot(131),imshow(I);
subplot(132),imshow(R);
subplot(133),imshow(R1);
figure,
subplot(131),imshow(I);
subplot(132),imshow(G);
subplot(133),imshow(G1);
figure,
subplot(131),imshow(I);
subplot(132),imshow(B);
subplot(133),imshow(B1);
figure,
subplot(121),imshow(I);
subplot(122),imshow(I1);

2. 分段线性灰度变换

为了突出图像中感兴趣的目标或者灰度区间,可采用分段线性法,将需要的图像细节灰度拉伸,对比度增强。3段线性变换法运算的数学表达式如下:

close all;clear all;clc;
%分段线性灰度变换
R=imread('F:/pao1.jpg');
J=rgb2gray(R);  %将彩色图像数据R转换为灰度图像数据J
[M,N]=size(J);  %获得灰度图像J的行列数M,N
x=1;y=1;
for x=1:M
    for y=1:N
        if (J(x,y)<=35);  %对灰度图像J进行分段处理,处理后的结果返回给矩阵H
            H(x,y)=J(x,y)*10;
        elseif(J(x,y)>35&J(x,y)<=75);
            H(x,y)=(10/7)*[J(x,y)-5]+50;
        else(J(x,y)>75);
            H(x,y)=(105/180)*[J(x,y)-75]+150;
        end
    end
end
figure,
subplot(121),imshow(J);
subplot(122),imshow(H);

3. 非线性灰度变换

当输出图像的像素点灰度值和输入图像的像素点灰度值不满足线性关系时,这种灰度变换都称为非线性灰度变换,我们以对数变换的非线性变换为例,讲解非线性灰度变换。变换公式如下:

close all;clear all;clc;
%基于对数变换的非线性灰度变换
R=imread('F:/pao1.jpg');
G=rgb2gray(R);  %转换成灰度图像
J=double(G);  %数据类型转换为双精度
H=(log(J+1))/10;  %进行基于常用对数的非线性灰度变换
figure,
subplot(121),imshow(G);
subplot(122),imshow(H);

总结:

以上三种方法给出了三种不同类型的点运算,它们的相同之处在于都能够改变图像的显示灰度,不同之处在于采用的数学方法不同。用户在需要进行图形灰度变换时,根据实际情况选择不同的运算形式,用户可参照实例设计自己的灰度变换。


------想飞上天,和太阳肩并肩------

matlab 实现图像的二值化、对比度拉伸变化

一、将一幅图像转化为二值图像,可以使用如下函数: BW = im2bw(I, level) %输出像素点小于level的像素,I是代表图像的变量,level是阈值,level属于[0 1]. BW ...
  • weixin_37571609
  • weixin_37571609
  • 2017-04-18 22:17:04
  • 2700

matlab 数字图像对比度拉伸算法

  • 2009年05月01日 11:57
  • 791B
  • 下载

【图像处理】MATLAB:亮度变换

亮度变换、对数和对比度拉伸变换、实用M函数
  • u013165921
  • u013165921
  • 2017-10-06 11:59:45
  • 892

图像处理中的对比度拉伸

  • 2011年06月14日 17:44
  • 203KB
  • 下载

图像操作的形态学处理MATLAB

colorbar        显示彩条 getimage       由坐标轴得到图像数据 ice(DIPUM)  交互彩色编辑 image          创建和显示图像对象 ...
  • u012116229
  • u012116229
  • 2015-04-15 08:22:48
  • 3877

图像的灰度变换——图像旋转、图像的反色处理、对比度拉伸

这次我们要处理的是对图像进行旋转操作,具体要求,如下:        自定义一个图像的仿射变换函数,用于旋转给定的输入图像,该函数的输入参数包括处理前的图像和旋转角度。输入的角度为正数,表明处理结果...
  • qq_15096707
  • qq_15096707
  • 2015-10-22 14:48:44
  • 5243

【数字图像处理之(三)】用图像增强谈灰度变换

前面已经说了,数字图像处理是指通过计算机对数字图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。 其主要目的有三个方面: 提高图像的视感质量,如进行图像的亮度、彩色变换,...
  • u012771236
  • u012771236
  • 2014-06-29 12:40:21
  • 7013

数字图像处理,经典对比度增强算法

直方图均衡化的英文名称是Histogram Equalization.    图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。直方图拉伸和直方图均衡化是两种最常...
  • EbowTang
  • EbowTang
  • 2014-07-28 20:24:50
  • 18904

图像对比度增强算法

论述了几种基于灰度直方图的图像对比度增强算法。
  • rongfzh1990
  • rongfzh1990
  • 2017-01-17 17:53:19
  • 12353

增强图像对比度算法原理及matlab代码实现

关于图像增强必须清楚的基本概念 1.图像增强的目的: 1)改善图像的视觉效果, 2)转换为更适合于人或机器分析处理的形式 3)突出对人或机器分析有意义的信息 4)抑制无用信息,提高图像的使用价值 ...
  • liuxiangxxl
  • liuxiangxxl
  • 2017-11-28 17:20:54
  • 3941
收藏助手
不良信息举报
您举报文章:matlab图像点运算 对比度增强 对比度拉伸 灰度变换
举报原因:
原因补充:

(最多只允许输入30个字)