Advertisement

图像增强算法

阅读量:

图像增强算法

复制代码
    DSIHE(等面积双子图像直方图均衡化);
    RMSHE(基于递归平均分离直方图均衡化的对比度增强算法);
    WTHE(基于权值阈值的直方图均衡算法) ;
    AMHE(自适应改进直方图均衡化);
    RSIHE算法(递归子图像直方图均衡化);
    红外图像直方图双向均衡技术研究
    
    
      
      
      
      
      
      
    

原始图像
首先介绍BBHE算法实现,其他算法之后一一介绍
保持亮度的双直方图均衡化(Brightness Preserving Bi-Histogram Equalization,BBHE)是由Kim提出的图像对比度增强算法,它能够在增强图像对比度的同时保持输入图像的平均亮度。直方图均衡化很少应用于诸如电视等消费电子产品中,因为直接使用直方图均衡化可能改变输入图像的原始亮度、降低视觉质量,而且直方图均衡化时生成的输出图像的平均亮度接近中间灰度,这并不能使亮度得以保存。
BBHE算法是根据均值将图像分为俩幅子图,一副子图像素值小于或等于原图像均值,另一幅是像素值大于原图像均值,然后分别对这俩幅图像进行直方图均衡化。利用BBHE增强的图像其平均亮度位于输入平均值和中间灰度的中间,与典型的直方图均衡化结果(输出平均值总是中间值)相比,BBHE增强的图像明显地保持了亮度。仿真结果也证明了BBHE在增强对比度的同时具有良好的亮度保持功能。因此,在消费电子领域,如电视、录像机或摄录机,利用BBHE算法可以使许多应用成为可能。为了在实际应用中有效地利用BBHE算法,需要努力降低算法的复杂度,如利用量化概率密度函数的方法。

复制代码
    %最早Kim在1997年提出BBHE算法[6],为的是在增强图像对比度的同时保
    %持灰度图像的亮度,这种算法是将输入图像分成两个子图像,第一个图像
    %的灰度值拉伸到最小值和均值之间,第二个子图像灰度值调整到均值和最
    %大值之间。
    img=imread('D:\2.png');
    img=rgb2gray(img);
    imshow(img,[]);
    
    sz = size(img);
    
    o_mean = round(mean(img(:)));
    
    %  zhifangtu
    
    h_l = zeros(256,1);
    
    h_u = zeros(256,1);
    
    for i = 1:sz(1)
    for j = 1:sz(2)
        
        g_val = img(i,j);
        
        if(g_val<=o_mean)
           h_l(g_val+1) = h_l(g_val+1) + 1;
        else
            h_u(g_val+1) = h_u(g_val+1)+ 1;
        end
        
    end
    end
    
    % NORMALIZED HISTOGRAM OR PDF
    
    nh_l = h_l/sum(h_l);
    nh_u = h_u/sum(h_u);
    
    % CDF
    
    hist_l_cdf = double(zeros(256,1));
    hist_u_cdf = double(zeros(256,1));
    
    hist_l_cdf(1) = nh_l(1);
    hist_u_cdf(1) = nh_u(1);
    
    for k = 2:256
    hist_l_cdf(k) =  hist_l_cdf(k-1) + nh_l(k);
    hist_u_cdf(k) =  hist_u_cdf(k-1) + nh_u(k);
    end
    
    % IMAGE MODIFICATION图像修正
    
    equalized_img = zeros(sz);
    
    range_l = [0 o_mean];
    range_u = [(o_mean+1) 255];
    
    for i =1:sz(1)
    for j =1:sz(2)
        g_val = img(i,j);
        
        if(g_val<=o_mean)
           equalized_img(i,j) = range_l(1) + round(((range_l(2)-range_l(1))*hist_l_cdf(g_val+1))); 
        else
           equalized_img(i,j) = range_u(1) + round(((range_u(2)-range_u(1))*hist_u_cdf(g_val+1))); 
        end
        
    end
    end
    
    figure,imshow(uint8(equalized_img))
    title('BBHE的直方图');
    figure,imhist(uint8(equalized_img))
    title('BBHE的直方图');
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

全部评论 (0)

还没有任何评论哟~