matlab图像进行变换

 线性点运算

a=imread('20151130101641521.tif');
subplot(231);
imshow(a);
title('原始图像');
b1=a+45;  %灰度值增加45
subplot(232);
imshow(b1);
title('灰度值增加');
b2=a*1.35;   %图像对比度增大
subplot(233);
imshow(b2);
title('对比度增加');
b3=0.55*a;     %图像对比度减少
subplot(234);
imshow(b3);
title('对比度减少');
b4=-double(a)+255;%图像求补,把a的类型转换成double后,再把double类型转换为uint8
subplot(235);
imshow(uint8(b4));
title('双精度类型');

结果:

 分段线性点运算

为了突出图像中感兴趣的目标或灰度区间,可采用分段线性法,将需要的图像细节灰度拉伸,对比度增加。

非线性变换

当输出图像的像素点灰度值与输入图像的像素点灰度值不满足线性关系时,这种灰度变换都称为非线性灰度变换。

J = imadjust(I)

将灰度图像 I 中的亮度值映射到 J 中的新值并使 1% 的数据是在低高强度和饱和,这增加了输出图像 J 的对比度值。此用法相当于 imadjust(I,stretchlim(I))

J = imadjust(I,[low_in; high_in],[low_out; high_out])

将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。low_in 以下与 high_in 以上的值被剪切掉了,也就是说,low_in 以下的值映射到 low_out,high_in 以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0 1]

J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)

将图像 I 中的亮度值映射到 J 中的新值,其中 gamma指定描述值I和值J关系的曲线形状。如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为(线性映射)。 

newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)

调整索引色图像的调色板map。如果low_in, high_in, low_out, high_out 和 gamma 都是标量,那么对 r,g,b 分量同时都做此映射。对于每个颜色分量都有唯一的映射,当 low_in 和 high_in 同时为1*3向量或者 low_out 和 high_out 同时为1*3向量或者 gamma 为1*3向量时。调整后的颜色矩阵 newmap 和 map 有相同的大小。

RGB2 = imadjust(RGB1,...)

对 RGB 图像 RGB1 的红、绿、蓝调色板分别进行调整。随着颜色矩阵的调整,每一个调色板都有唯一的映射值。

M=imread('20151130101641521.tif');
I=rgb2gray(M);
subplot(221);imshow(I);
J=imadjust(I); %调整灰度
subplot(222);imshow(J);
title('原始图像灰度调整');
K=imadjust(I,[0.3,0.7],[]);
subplot(223);imshow(K)
title('图像变亮');
G=imadjust(I,[0.3,0.7],[0,1],4);
subplot(224);imshow(G)
title('图像变暗');

 结果:

 直方图修正

灰度级的直方图就是反映一幅图像中的灰度级与出现这种灰度概率之间关系的图形。

MATLAB中的imhist函数计算和显示图像的直方图。调用格式:

(1)imhist(I,n),绘制灰度图像的直方图。

(2)imhist(X,map),绘制索引色图像的直方图。

(3)[counts,x]=imhist(...)

其中,I代表灰度图像,n为指定的灰度级数目,默认为256,counts和x分别为返回直方图数据向量和相应的色彩值向量。

%利用imhist函数计算和显示灰度图像的直方图
I=imread('20151130101641521.tif');
subplot(121);imshow(I);
title('原始图像');
subplot(122);imhist(I);
title('灰度直方图');

结果:

  
直方图均衡化 

直方图均衡化是一种利用灰度变换自动调节图像对比质量的方式,基本思想是通过灰度级的概率密度函数求出灰度变换函数,它是一种以累积分布函数变换法为基础的直方图修正法。

步骤:

(1)求出给定待处理的直方图

(2)利用累计分布函数对原图像的统计直方图作变换,得到新的图像灰度

(3)进行近似处理,将新灰度代替旧灰度,同时将灰度值相等或者相近的每个灰度值直方图合并一起。

histep函数:

(1)J=histep(I,n),直方图均衡化,指定均衡化后的灰度级数n,n默认为64

(2)[J,T]=histep(I,...),返回能将图像I的直方图转换为图像J的直方图的变换矩阵T

(3)[newmap,T]=histep(X,...)返回能将索引图像I的直方图转换为newmapyans直方图的变换矩阵T。

%利用histep函数对灰度图像进行直方图均衡化
I=imread('20151130101641521.tif');
J=histeq(I);
subplot(221);imshow(I);
title('原始图像');
subplot(222);imshow(J);
title('图像均衡化');
subplot(223);imhist(I,64);
title('原图像的直方图');
subplot(224);imhist(J,64);
title('图像均衡化的直方图');

结果:

 

直方图规定划 

直方图均衡化所产生的直方图是近似均匀的,但有时为了增加图像中某些灰度级,从而得到具有特定属性的直方图图像,由此产生了直方图规定划处理。直方图规定划是对图像的直方图进行处理,使得处理后的图像直方图的形状逼近用户希望的直方图。

histeq函数的调用格式:

(1)J=histeq(I,hgram).I为输入的直方图像,hgram为一个整数向量,表示用户希望的直方图形状,该向量的长度与规定的效果有密度关系,向量越短,最后得到的直方图越逼近用户希望的直方图。

(2)newmap=histeq[X,map,hgram],对索引图像X进行直方图规定划,参数map为列数为3的矩阵,表示色图。

%利用histep函数对图像进行规定划处理
I=imread('20151130101641521.tif');
hgram=ones(1,256);
J=histeq(I,hgram);
subplot(121);imshow(uint8(I));
title('原始图像');
subplot(122);imhist(J)

结果:

 

猜你喜欢

转载自blog.csdn.net/qq_35654080/article/details/82758186