【图像增强】基于局部对比度增强的CLAHE算法实现图像增强Matlab代码

482 阅读2分钟

1 简介

在智能交通系统中,天气和光照是图像采集质量的重要客观条件,对后续处理及最终监管有不可忽视的影响.针对雾天和夜间等低对比度图像,提出一种基于有限对比度适应性直方图均衡化的改进算法.该方法首先进行RGB和HIS彩色空间转换,最后对亮度分量进行CLAHE变,之后做RGB输出.实验结果表明,该方法在提高对比度同时,良好地保持图像的目标信息,能够提高后续识别和监管的有效性.

2 部分代码

%   My_adapthisteq:剪裁函数,用于剪裁直方图并且重新分配像素值,
%                   可以把超过Clip_limit的像素值均匀分配到直方图的其他位置
%   输入:输入直方图Hist;直方图横轴总数sum_pixel_bin
%         剪裁阈值Clip_limit;高分成的子块数subpart_X;宽分成的子块数subpart_Y
%   输出:剪裁后的直方图Hist
function [Hist] = My_clip_histogram(Hist,sum_pixel_bin,clip_limit,subpart_X,subpart_Y)
  for i = 1:subpart_X
      for j = 1:subpart_Y
          %% (1) 计算超过阈值的像素值总数 
          sum_excess = 0;
          for nr = 1:sum_pixel_bin
              excess = Hist(i,j,nr) - clip_limit;
              if excess > 0
                  sum_excess = sum_excess + excess;
              end
          end
          %% (2) 剪裁并重建直方图
          bin_averate = sum_excess / sum_pixel_bin; % 平均超过的像素值
          upper = clip_limit - bin_averate;         % 上限,保证重建的直方图不超过阈值
          for nr = 1:sum_pixel_bin
              if Hist(i,j,nr) > clip_limit           % 若大于阈值,直接裁掉
                  Hist(i,j,nr) = clip_limit;
              else
                  if Hist(i,j,nr) > upper           % 否则,若大于上限,把这些像素值设为阈值
                      %另一种表达方式:sum_excess = sum_excess + upper - Hist(i,j,nr);% 从总数中减去
                      sum_excess = sum_excess -(Hist(i,j,nr)-upper);% 从总数中减去
                      Hist(i,j,nr) = clip_limit;
                  else
                      sum_excess = sum_excess - bin_averate;% 否则,若小于上限,则加上平均超过的像素值
                      Hist(i,j,nr) = Hist(i,j,nr) + bin_averate;
                  end
              end
          end
          if sum_excess > 0                         % 若超过像素值总数大于零,再平均分给每一个像素值
              step_size = max(1,fix(1+sum_excess/sum_pixel_bin)); % 计算步长
              for nr = 1:sum_pixel_bin               % 从最小灰度级到最大灰度级按照步长循环搜索
                  sum_excess = sum_excess - step_size;
                  Hist(i,j,nr) = Hist(i,j,nr) + step_size;
                  if sum_excess < 1                 % 若小于1,循环结束
                      break;
                  end
              end
          end
      end
  end
end

3 仿真结果

4 参考文献

[1]张璞, 王英, and 王苏苏. "基于CLAHE变换的低对比度图像增强改进算法." 青岛大学学报:工程技术版 26.4(2011):4.

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页