1 简介 为了实现对图像的降噪,兼顾全局整体增强和局部细节增强,首先定义输入图像的对比度度量模型和亮度度量模型,然后构造标量权重映射,并进行归一化处理,接着综合利用高
1 简介
为了实现对图像的降噪,兼顾全局整体增强和局部细节增强,首先定义输入图像的对比度度量模型和亮度度量模型,然后构造标量权重映射,并进行归一化处理,接着综合利用高斯金字塔和拉普拉斯金字塔,制定融合规则,利用融合金字塔重构图像,实现图像增强。
2 部分代码
% 对图像进行灰度世界白平衡处理% 再进行直方图自动对比度调整
function output = simple_color_balance(image)
num = 255;
r = image(:, :, 1);
g = image(:, :, 2);
b = image(:, :, 3);
Ravg = mean(mean(r));
Gavg = mean(mean(g));
Bavg = mean(mean(b));
avgRGB = [Ravg, Gavg, Bavg];
grayValue = (Ravg + Gavg + Bavg)/3;
scaleValue = grayValue./avgRGB;
% newI(:,:,1) = scaleValue(1) * r;
% newI(:,:,2) = scaleValue(2) * g;
% newI(:,:,3) = scaleValue(3) * b;
%
% figure,imshow(newI);
satLevel = 0.001 * scaleValue;
[m,n,p] = size(image);
imgRGB_orig = zeros(p, m*n);
for i = 1 : p
imgRGB_orig(i, : ) = reshape(double(image(:, :, i)), [1, m * n]);
end
imRGB = zeros(size(imgRGB_orig));
%直方图对比度调整
for ch = 1 : p
q = [satLevel(ch), 1 - satLevel(ch)];
tiles = quantile(imgRGB_orig(ch, :), q);
temp = imgRGB_orig(ch, :);
temp(find(temp < tiles(1))) = tiles(1);
temp(find(temp > tiles(2))) = tiles(2);
imRGB(ch, :) = temp;
pmin = min(imRGB(ch, :));
pmax = max(imRGB(ch, :));
% fac(A) = Amin + (A - Alow) * (Amax -Amin)/(Ahigh - Alow)
% 对于8bit图像,Amin = 0,Amax = 255
imRGB(ch, :) = (imRGB(ch, :) - pmin) * num /(pmax - pmin);
end
output = zeros(size(image));
for i = 1 : p
output(:, :, i) = reshape(imRGB(i, :), [m, n]);
end
output = uint8(output);
end
3 仿真结果
4 参考文献
[1]马永强, 王顺利, 孙伟,等. 基于高斯金字塔和拉普拉斯金字塔融合的图像对比度增强算法研究[J]. 信息与电脑, 2018(4):3.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。