基于Retinex的水下图像增强算法详解
创作时间:
作者:
@小白创作中心
基于Retinex的水下图像增强算法详解
引用
CSDN
1.
https://m.blog.csdn.net/qq_1309399183/article/details/144861767
水下图像常常因为能见度差和散射而退化,导致色彩丢失和光照减弱,特别是在红色通道。本项目复制了一种用于水下图像的颜色校正算法。该算法利用相机中的彩色滤波阵列(CFA)特性来增强色彩和光照,并采用Retinex模型改进光照效果以及自适应直方图均衡化来提升对比度。算法的有效性在各种图像上进行了测试。主要目标是恢复水下图像的颜色和对比度,以利于研究和探索中的分析和推理。
项目概述
本项目成功实现了基于文献的水下图像颜色校正算法。该算法分步骤地增强了图像,解决了由水下红色通道衰减和散射引起的问题。通过恢复原始色彩和对比度,提高了水下图像用于分析和探索的可用性。
动机
项目的动机在于将实际的图像处理技术应用于之前难以处理的彩色图像。由于文献中关于Retinex增强细节的缺乏,促使了更深入的研究。确保处理步骤之间的兼容性和理解中间数据类型至关重要。未来的工作包括自动化参数调整和提高计算效率,因为Retinex计算过程耗时较长。
阶段性成果
以下展示了各阶段处理后获得的结果:
原始图像
红色通道补偿
白平衡处理后的红色通道补偿
使用Retinex改善光照
直方图均衡化
代码实现
function output_img = MSRCR_retinex(I)
R = I(:, :, 1);
G = I(:, :, 2);
B = I(:, :, 3);
R0 = double(R);
G0 = double(G);
B0 = double(B);
[N1, M1] = size(R);
Rlog = log(R0+1);
Rfft2 = fft2(R0);
sigma1 = 128;
F1 = fspecial('gaussian', [N1,M1], sigma1);
Efft1 = fft2(double(F1));
DR0 = Rfft2.* Efft1;
DR = ifft2(DR0);
DRlog = log(DR +1);
Rr1 = Rlog - DRlog;
sigma2 = 256;
F2 = fspecial('gaussian', [N1,M1], sigma2);
Efft2 = fft2(double(F2));
DR0 = Rfft2.* Efft2;
DR = ifft2(DR0);
DRlog = log(DR +1);
Rr2 = Rlog - DRlog;
sigma3 = 512;
F3 = fspecial('gaussian', [N1,M1], sigma3);
Efft3 = fft2(double(F3));
DR0 = Rfft2.* Efft3;
DR = ifft2(DR0);
DRlog = log(DR +1);
Rr3 = Rlog - DRlog;
Rr = (Rr1 + Rr2 +Rr3)/3;
a = 125;
II = imadd(R0, G0);
II = imadd(II, B0);
Ir = immultiply(R0, a);
C = imdivide(Ir, II);
C = log(C+1);
Rr = immultiply(C, Rr);
EXPRr = exp(Rr);
MIN = min(min(EXPRr));
MAX = max(max(EXPRr));
EXPRr = (EXPRr - MIN)/(MAX - MIN);
EXPRr = adapthisteq(EXPRr);
Glog = log(G0+1);
Gfft2 = fft2(G0);
DG0 = Gfft2.* Efft1;
DG = ifft2(DG0);
DGlog = log(DG +1);
Gg1 = Glog - DGlog;
DG0 = Gfft2.* Efft2;
DG = ifft2(DG0);
DGlog = log(DG +1);
Gg2 = Glog - DGlog;
DG0 = Gfft2.* Efft3;
DG = ifft2(DG0);
DGlog = log(DG +1);
Gg3 = Glog - DGlog;
Gg = (Gg1 + Gg2 +Gg3)/3;
Ig = immultiply(G0, a);
C = imdivide(Ig, II);
C = log(C+1);
Gg = immultiply(C, Gg);
EXPGg = exp(Gg);
MIN = min(min(EXPGg));
MAX = max(max(EXPGg));
EXPGg = (EXPGg - MIN)/(MAX - MIN);
EXPGg = adapthisteq(EXPGg);
Blog = log(B0+1);
Bfft2 = fft2(B0);
DB0 = Bfft2.* Efft1;
DB = ifft2(DB0);
DBlog = log(DB +1);
Bb1 = Blog - DBlog;
DB0 = Gfft2.* Efft2;
DB = ifft2(DB0);
DBlog = log(DB +1);
Bb2 = Blog - DBlog;
DB0 = Gfft2.* Efft3;
DB = ifft2(DB0);
DBlog = log(DB +1);
Bb3 = Blog - DBlog;
Bb = (Bb1 + Bb2 + Bb3)/3;
Ib = immultiply(B0, a);
C = imdivide(Ib, II);
C = log(C+1);
Bb = immultiply(C, Bb);
EXPBb= exp(Bb);
MIN = min(min(EXPBb));
MAX = max(max(EXPBb));
EXPBb = (EXPBb - MIN)/(MAX - MIN);
EXPBb = adapthisteq(EXPBb);
output_img = cat(3, EXPRr, EXPGg, EXPBb);
end
方法论
为了实现上述目标,本项目采用了以下几种关键技术:
- 彩色滤波阵列(CFA)属性:利用相机传感器中的CFA特性来捕捉和增强水下的色彩信息。
- Retinex模型:这是一种模拟人类视觉系统的算法,它分离反射光和环境光成分,从而改善图像的光照条件。特别适用于修正因水介质引起的颜色失真。
- 自适应直方图均衡化:这种方法可以动态调整图像的对比度,使得暗部和亮部都能显示出更多细节,而不只是简单地拉伸整个图像的亮度范围。
结论
综上所述,本项目不仅实现了有效的水下图像颜色校正和增强,还为后续研究提供了宝贵的经验和技术参考。随着对Retinex方法及其变体的不断优化,以及对其他相关技术的应用,我们可以期待在未来进一步提升水下成像的质量,为海洋科学、考古学和其他领域带来更多的可能性。
热门推荐
适合孩子去的博物馆推荐 小学生必去的博物馆
家庭常见物品家具保洁小窍门
《乡爱17》定档!赵本山携四对夫妻上演"欢喜闹剧"
城管执法:在力度与温度之间寻找平衡
春节领导祝福短信,高情商模板大揭秘!
城管与小商贩的那些事儿:谁在为城市文明买单?
中国医学科学院证实:蒲地蓝消炎口服液对新冠病毒有效
抗氧化物助力抗癌控糖,五款高抗氧化蔬菜推荐
警惕!北京环球影城门票诈骗频发,官方紧急提醒
肯尼迪家族在美国大选中的“另类”
《星际穿越》带火黑洞时间旅行热
NASA最新研究:黑洞之旅的可视化突破
引力波揭示黑洞奥秘:从霍金预言到最新发现
巴西柔术训练指南:从体力训练到装备选择
马龙樊振东的球拍秘密:如何选对你的乒乓球装备
福如东海,寿比南山——如何写出感人至深的长辈祝寿词
古诗词助你成为长辈寿宴上的祝福达人
春节拜年视频创意大比拼!
心脏不好的九个表现,你中招了吗?
殷桃新作《小夫妻》定档,搭档郭京飞演绎家庭分工大反转!
揭秘宇宙最硬核大佬:中子星的秘密
常吃绿叶蔬菜,身体会出现这12种健康益处,现在知道也不晚!
饮食健康,“油”为重要
中科院近代物理所揭秘:中子星周期跃变新发现
城管执法冲突背后的社会学解读
城管执法困境与改革路径
瓷砖美缝的方法有哪些?怎样保证瓷砖美缝的效果?
桂林春节冷到爆!这份防寒攻略请收好
《熊出没·重启未来》笑点满满,你最期待谁的表现?
三宝垄 3 天文化与美食之旅