图像增强中的灰度拓展

 很简单的图像处理程序,读取灰度图像,然后对该图像做灰度拓展,拓展到整个灰度级。
 
利用matlab实现。
思路:
  读取灰度数据,然后找到该灰度数据中的最大值、最小值,从而获取灰度拓展的函数关系。也就是获取直线方程,比如最大值为max,最小值为min,则有直线两点(min,0)、(max,255);有y=k*x+b;
有几何知识获取该直线方程,获取直线参数k b, 利用该直线方程,即完成拓展

% gray average
syms min_gray max_gray k b ;
double tmp;
b=-10;
min_gray=255;
max_gray=0;
img=imread('c:\gray.jpg');
img_size=size(img);
img_gray=zeros( size(img) ,'uint8');
%img_hist=zeros( size(img) ,'uint8');
%img_gray_hist=zeros( size(img) ,'uint8');
for i=1:img_size(1)
    for j=1:img_size(2)
        if img(i,j)>max_gray
            max_gray=img(i,j);
        end
        
        if img(i,j)<min_gray
            min_gray=img(i,j);
        end
            
    end
end

k=double( (255-0)/( double(max_gray)- double(min_gray) ) ); % 计算直线斜率
b=-1*(k* double(min_gray) ); %计算截距
%k=2.1;
for i=1:img_size(1)
    for j=1:img_size(2)
      % img_gray(i,j)=uint8( 5.3125.*img(i,j)-478.13 );
      tmp=double( img(i,j) );
      img_gray(i,j)=uint8(k*tmp+b); % 灰度平均化
    end
end

img_hist=imhist(img);
img_gray_hist=imhist(img_gray);


figure;
subplot(221);
imshow(img);
subplot(222);
imhist(img);
%imshow(img_hist);
subplot(223);
imshow(img_gray);
subplot(224);
imhist(img_gray);
%imshow(img_gray_hist);

收获:

  1,进一步熟悉matlab m语言的使用。

     for循环、if语句、不同变量

     要注意MATLAB中数据溢出的问题,

    比如在本例中,图像数据读入的是uint8类型数据,与k( double)相乘时,既然一直是0,考虑是因为k为double类型,k*图像数据可能超过255而导致数据溢出,解决方法是设置中间变量,然后强制将图像数据赋值给临时变量,在计算。

  2,验证数字图像处理相关知识。

  3,没有什么新的发现,就是熟悉加验证。


 

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(378) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值