基于灰度变换的图像增强

再明确几个概念

1,灰度:对于通常所谓的黑白图像,把黑色和白色之间按对数关系分为若干等级称为灰度。灰度分为256阶,用灰度表示的图像称作灰度图.在图像中用0~255表示,0是全黑,255是全白

2.对比度:对比度值一幅图像中敏感区域最亮的白和最暗的黑之间的不同亮度层级的测量,差异范围越大代表对比月大。好的对比率120:1就可以容易的显式生动、丰富的色彩,当对比率达到300:1时便可以支持各阶的颜色。

imadjust()函数

    imadjust()函数是针对灰度图进行灰度变换的基本图像处理工具箱函数。特别注意的是imadjust()函数会截掉在其取值范围外的灰度值,gamma值大于1图像变暗输出,gamma值小于1输出图像变亮。

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

举个例子:
J = imadjust(I,[0.3 0.8],[0.2 0.9]) :表示I显示在J中的像素值范围为0.3到0.8,而且0.3在J中对应0.2,0.8在J中对应0.9。I中小于0.3的也都在J中用0.2表示,高于0.8的像素在J中都用0.9表示。
J = imadjust(I,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA)
         GAMMA指定描述I和J关系的曲线的形状,GAMMA小于1意味着I的值在映射到J时变得比原值更大,GAMMA大于1意味着I的值映射后更小。

ganna函数很简单,形如s=crr

 


具体用法和意思可参考:

imadjust从用法到原理—Matlab灰度变换函数之一;网址:https://www.cnblogs.com/ggYYa/p/6007385.html

stretchlim()函数

基本语法:Low_High=stretchlim(f);其中f是输入图像.较为通用的语法是:

    Low_High=stretchlim(f,tol);其中tol是两元素向量[Low_frac high_frac],指定了图像低和高像素值饱和度的百分比。

       如果tol是标量,那么low_frac=tol,high_frac=1-low_frac;饱和度等于低像素和高像素的百分比。如果在参数中忽略tol那么饱和度水平为2%,tol默认值为[0.01 0.99].如果选择tol=0,那么Low_High=[min(f(:)) max(f(:))].

       Low_High的值指定灰度图像f中所有像素值底部和顶部饱和度的1%,结果以向量[low_in high_in]的形式应用于imadjust函数如:

           g=imadust(f,stretchlim(f),[]);

 

 

代码如图:

clc;
clear all;
I=imread('03.tif');
subplot(1,3,1);
imshow(I);
title('原图像');

image1=imadjust(I,[ ],[ ],0.8);
subplot(1,3,2);
imshow(image1);
title('gamma值调整');

image2=imadjust(I,stretchlim(I),[],0.8);
subplot(1,3,3);
imshow(image2);
title('stretchlim');

 

 

posted @ 2019-07-15 08:33  浮沉沉浮  阅读(3082)  评论(0编辑  收藏  举报