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代码与数据下载地址
见博客主页