基于直方图均衡化的水下激光图像处理(MATLAB仿真)
原文:http://blog.csdn.net/sunlinyi66/article/details/39215447
基于直方图均衡化的水下图像增强(MATLAB仿真)
可以对RGB三个通道进行直方图规定化从而实现水下图像增强。此处我们使用的是直方图均衡化,通过实际仿真效果也很明显。
前段时间一直在做去雾处理。在laviewpbt博客中对去雾算法介绍的很详细,我从暗通道算法开始学习的,后来又仿真快速去雾算法,效果都还可以。然后花了两周的时间,在DM642上实现快速去雾算法的视频处理,效果比较一般,以后再写一下具体的实验效果。
我们最终的目的的是实现水下激光成像,去雾算法和水下图像处理还是有一定的差距的。前段时间也没有看水下成像的仿真,只是看了一下具体的系统设计等等。今天看到能够用三个通道分别通过直方图规定化来进行增强,而我前段时间在学习那本经典的《数字图像处理》(冈萨雷斯)做过直方图均衡化的仿真,所以直接拿过程序进行仿真。通过实际测试效果还是可以的。下面列出一些具体的测试结果:
MATLAB仿真程序:
%{
基于直方图均衡化的水下图像增强(MATLAB仿真)
对RGB三个通道分别进行均衡化处理,得到增强之后的图像
实际测试,效果明显,下面
时间:2014年9月11日23:59:01
整理:天空之恋
地点:桂电
%}
clear;
t = imread('wa5.png');
I=t(:,:,1);
[height,width] = size(I);
subplot(121);
imshow(t),title('原始图像')%显示原始图像
%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
%进行像素灰度统计;
s = zeros(1,256);%统计各灰度数目,共256个灰度级
%绘制直方图
gp=zeros(1,256);
for k=0:255
gp(k+1)=length(find(I==k))/(height*width);
end
for i = 1:height
for j = 1: width
s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一
end
end
%计算灰度分布密度
p = zeros(1,256);
for i = 1:256
p(i) = s(i) / (height * width * 1.0);
end
%计算累计直方图分布
c = zeros(1,256);
c(1) = p(1);
for i = 2:256
c(i) = c(i - 1) + p(i);
end
%累计分布取整,将其数值归一化为1~256
c = uint8(255 .* c + 0.5);
%对图像进行均衡化
for i = 1:height
for j = 1: width
Ir(i,j) = c(I(i,j)+1);
end
end
dis(:,:,1)=Ir;
%subplot(122)
%imshow(Ir)%显示均衡化后的图像
%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
I=t(:,:,2);
[height,width] = size(I);
%下面使用直方图均衡化进行处理
%进行像素灰度统计;
s = zeros(1,256);%统计各灰度数目,共256个灰度级
%绘制直方图
gp=zeros(1,256);
for k=0:255
gp(k+1)=length(find(I==k))/(height*width);
end
for i = 1:height
for j = 1: width
s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一
end
end
%计算灰度分布密度
p = zeros(1,256);
for i = 1:256
p(i) = s(i) / (height * width * 1.0);
end
%计算累计直方图分布
c = zeros(1,256);
c(1) = p(1);
for i = 2:256
c(i) = c(i - 1) + p(i);
end
%累计分布取整,将其数值归一化为1~256
c = uint8(255 .* c + 0.5);
%对图像进行均衡化
for i = 1:height
for j = 1: width
Ig(i,j) = c(I(i,j)+1);
end
end
%subplot(122)
%imshow(Ig)%显示均衡化后的图像
dis(:,:,2)=Ig;
%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
I=t(:,:,3);
[height,width] = size(I);
%下面使用直方图均衡化进行处理
%进行像素灰度统计;
s = zeros(1,256);%统计各灰度数目,共256个灰度级
%绘制直方图
gp=zeros(1,256);
for k=0:255
gp(k+1)=length(find(I==k))/(height*width);
end
for i = 1:height
for j = 1: width
s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一
end
end
%计算灰度分布密度
p = zeros(1,256);
for i = 1:256
p(i) = s(i) / (height * width * 1.0);
end
%计算累计直方图分布
c = zeros(1,256);
c(1) = p(1);
for i = 2:256
c(i) = c(i - 1) + p(i);
end
%累计分布取整,将其数值归一化为1~256
c = uint8(255 .* c + 0.5);
%对图像进行均衡化
for i = 1:height
for j = 1: width
Ib(i,j) = c(I(i,j)+1);
end
end
dis(:,:,3)=Ib;
%subplot(122)
%imshow(Ib)%显示均衡化后的图像
subplot(122);
imshow(dis),title('处理之后的图像')%显示均衡化后的图像
基于直方图均衡化的水下激光图像处理(MATLAB仿真)相关推荐
- 基于直方图均衡化的激光水下图像处理
采用直方图进行水下图像处理,感觉对我搜到的这几个图片效果可以,最近看了一些使用修正的暗通道进行水下图像处理的,但是我没有弄出来效果.我感觉即使使用暗通道进行处理,那么每个通过处理的结果应该也朝直方图均 ...
- matlab ssgs工具箱,基于PI控制方式的1A开关电源MATLAB仿真研究
基于 PI 控制方式的 1A 开关电源 MATLAB 仿真研究学院:电气与光电工程学院专业:电气工程及其自动化班级:基于 PI 控制方式的 1A 开关电源 MATLAB 仿真研究0目录0 绪论 --- ...
- matlab仿真限幅发散,基于模糊控制的直流电机调速系统MATLAB仿真_贾东耀
基于模糊控制的直流电机调速系统MATLAB 仿真 贾东耀,曾智刚 (广东工业大学,广州市 510090) 摘 要:采用Fuzzy-PI 控制策略进行直流电机的调速系统设计,它克服了简单模糊控制和传统P ...
- 【ISAR成像定标方法(4)—基于参数估计法的方位维定标MATLAB仿真】
目录 前提介绍 基于LOG算子的目标散射点提取 基于ICPF的转速估计 ISAR成像定标仿真实验 结语 前提介绍 本章内容简介:分析了CPF(三次相位函数法),CICPF(相干三次相位函数法)和ICP ...
- 基于瞬时无功功率ip-iq的谐波信号检测MATLAB仿真
建议使用MATLAB2021b 资源: 基于瞬时无功功率ip-iq的谐波信号检测MATLAB仿真资源-CSDN文库 整体模型: 模型具体工作原理不做介绍,因为此方法很老,参考文献巨多!!! 单相输入 ...
- 神经网络pid控制器MATLAB,基于BP神经网络的PID控制器及其MATLAB仿真.pdf
基于BP神经网络的PID控制器及其MATLAB仿真.pdf 2009 NO.10 中国新技术新产品 China New Technologies and Products 高新技术 基于BP 神经网络 ...
- 基于 VANET 的车辆网络通信系统的 Matlab 仿真实现
基于 VANET 的车辆网络通信系统的 Matlab 仿真实现 现如今,车辆自组网(VANET)已经成为一种热门的技术.它将车与车之间.车与基础设施之间的通信联系起来,形成一种智能化的交通网络.因此, ...
- 图像的常用灰度变换——负片、伽马变换、对数变换、直方图均衡化、自适应灰度变换及其MATLAB实现
灰度变换是图像预处理的重要手段,常见的变换方法如下,图文并茂和大家一起学习: %% 尝试灰度变换--伽马变换和对数变换.直方图均衡化clc,clear,close allf = imread('C:\ ...
- 基于RFM-SCAN的图像配准算法的matlab仿真
目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 这些匹配点通常是基于描述符相似性创建的.为了实现这一目标,现有的尝试通常涉及在几何约束下估计图像变换,其中需要预定义的变换模型 ...
最新文章
- 浅谈 javascript 中的this绑定问题
- 阿里百度12个iOS 技术面试题及答案总结,希望对你有帮助!
- html 旋转木马 轮播,JS实现旋转木马式图片轮播效果
- 网络驱动器映射成功但无法更新文件_我的电脑访问NAS像打开本地硬盘那样打开网络NAS...
- 安卓开发 xml添加滑动条
- @软考考生,你要的软考论文写作技巧和论文范文来啦~
- 西门子atch指令详解_西门子PLC中断指令?
- 100道经典的c语言面试题
- iSCSI Target和Initiator安装与操作步骤详解
- spider_study 1
- python乒乓球比赛规则介绍_用英语介绍乒乓球的比赛规则
- 【VS问题已解决】警告被视为错误 - 没有生成“object”文件
- 在Apple开发官网测试TestFlight
- 计算机考研难度档,计算机考研院校报考难度排行
- 运动估计和最佳匹配块搜索算法
- 如何提高本地文件上传至百度云的速度_【软件推荐】满速下载软件,说出来你可能不信最高速度达到150m/s...
- Openwrt无线管理工具/命令
- 采取递归算法的方式升级打怪
- pmos低电平驱动_MOS管的低端驱动和高端驱动
- pagerank 的介绍
热门文章
- 网络bcc程序测试方案
- mysql 4.0字符集,mysql4.0升级到mysql5(4.1),解决字符集问题
- 技嘉z68pds3刷中文bios_技嘉RTX 3080 VISION OC雪鹰显卡评测:内容创作、3A游戏两不误之选...
- oracle往mysql数据同步存储过程_Oracle数据库之间数据同步
- mysql row 转int_mysql_row[]取值转换有关问题,
- php后台图片压缩_php实现等比例压缩图片
- 你知道吗?OAuth2客户端有两种,认证方式有七种。
- 如何轻松搞定CRUD的创建人、修改人、时间等字段的赋值
- 福利继续:赠书《Spring Cloud微服务-全栈技术与案例解析》
- html页面怎样禁止复制粘贴,javascript中如何禁止复制粘贴?