%para=0代表原始方法,para=1代表改进后的方法
function out = WhitePatchRetinex(in,para)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
%%%%copyright: ofalling %%%%
if( nargin < 2 )
para = 0;
end
out = zeros(size(in));            %out定义一个和输入图像同等大小的零矩阵
inDouble = double(in);            %将图像转换为double型
L = [0 0 0];                      %定义一个行向量,用于存放光源的三个通道的值
if ( para == 0 )                  %para=0,表示采用原始方法
for i = 1:3
L(i) = max(max(in(:,:,i)));       %分别获取三个通道中的最大值
out(:,:,i) = inDouble(:,:,i)/L(i);%获取输出图像
end
elseif ( para == 1 )              % more robust algorithm
np = 0.1 * size(in,1)*size(in,2); %获取总像素个数的10%
for i = 1:3
H = imhist(in(:,:,i));            %每个通道的直方图
j = 256;
sum = 0;
while( (sum < np)&(j > 1) )       %只要像素点个数没有统计完,并且j>1
j = j-1;
sum = sum + H(j);                 %累加直方图值
end
L(i) = j;
out(:,:,i) = inDouble(:,:,i)/L(i);%输出图
end
end
end

接着前面的一篇介绍White Patch Retinex算法的介绍,自己试着运行了一下程序,由于自己电脑所带的版本为Matlab2010,该版本还没有White Patch Retinex算法,所以需要自己新建该函数(File->New->Function),函数的代码如上所示,封装完之后,采用如下方式调用该函数出现下面的错误:

将程序代码部分执行发现:

out=zeros(size('D:\123.jpg'))

输出为:

out =0     0     0     0     0     0     0     0     0     0

所以采用这种输入方式是不正确的:需要用imread函数读取图像后赋值给一个变量再显示。

调用程序:

A=imread('D:\123.png');
A1= WhitePatchRetinex(A,0);
A2=WhitePatchRetinex(A,1);
B1=imread('D:\124.png');
B2=WhitePatchRetinex(B1,0);
B3=WhitePatchRetinex(B1,1);
subplot(231),imshow(B1);
title('input1');
subplot(232),imshow(B2);
title('White Patch Retinex');
subplot(233),imshow(B3);
title('Modified White Patch Retinex');subplot(234),imshow(A);
title('input2');
subplot(235),imshow(A1);
title('White Patch Retinex');
subplot(236),imshow(A2);
title('Modified White Patch Retinex');

运行效果图:

【算法学习】【图像增强】【Retinex】White Patch Retinex 程序解读相关推荐

  1. Color Constancy 色彩恒常性(1)White Patch Retinex

    [原创]Color Constancy 色彩恒常性(1)White Patch Retinex Color Constancy主要是通过 Marc Ebner 的一本专著" Color Co ...

  2. 关于MPU6050学习的一些总结之三MPU6050程序解读

    关于MPU6050学习的一些总结之三MPU6050程序解读 前言 MPU6050.h 初始化函数 获取数据 数据处理(计算零偏) 结语 前言 经过两天的整理终于可以尝试解读MPU6050程序了,话不多 ...

  3. 七桥问题c语言程序数据结构,数据结构与算法学习——图论

    什么是图? 在计算机程序设计中,图结构也是一种非常常见的数据结构 但是图论其实是一个非常大的话题 图结构是一种与树结构有些相似的数据结构 图论是数学的一个分支,并且在数学概念上,树是图的一种 它以图为 ...

  4. 算法学习之路和程序员(技术)学习必读书籍

    原文链接:http://lucida.me/blog/on-learning-algorithms/ 转 算法学习之路和程序员(技术)学习必读书籍 2015年05月26日 09:46:56 阅读数:1 ...

  5. python图像增强算法_retinex图像增强算法的研究

    图像增强方面我共研究了Retinex.暗通道去雾.ACE等算法.其实,它们都是共通的.甚至可以说,Retinex和暗通道去雾就是同一个算法的两个不同视角,而ACE算法又是将Retinex和灰度世界等白 ...

  6. YOLO系列算法学习

    YOLO系列算法学习 YOLOV1算法 预测阶段(前向推断) yolo基准模型和tiny模型结构 基准模型 为什么是7x7x30的输出? 流程可视化 预测阶段后处理-NMS非极大值抑制 两个bboxs ...

  7. 拿下斯坦福和剑桥双offer,00后的算法学习之路

    董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...

  8. 原创 | 初学者友好!最全算法学习资源汇总(附链接)

    在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...

  9. python leetcode_leetcode 介绍和 python 数据结构与算法学习资料

    for (刚入门的编程)的高中 or 大学生 leetcode 介绍 leetcode 可以说是 cs 最核心的一门"课程"了,虽然不是大学开设的,但基本上每一个现代的高水平的程序 ...

  10. 机器学习(八)Apriori算法学习

    Apriori算法学习 原文地址:http://blog.csdn.net/hjimce/article/details/45438507 作者:hjimce 本文主要是我学习<机器学习实战&g ...

最新文章

  1. Python之Fabric
  2. Sublime Text 2报“Decode error - output not utf-8”错误的解决办法
  3. vue-自主研发非父子关系组件之间通信的问题
  4. android gps 锁屏更新坐标_MIUI内测版更新日志解析,以及动画解说!
  5. 新型前端开发工程师的三个境界 后端开发工程师如何快速转前端
  6. [故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?
  7. UVA 213 Message Decoding
  8. spring学习笔记06-spring整合junit(出现的问题,解决的思路)
  9. 刷leetcode第五题-最长回文字符串
  10. 性能测试Jmeter吞吐量控制器使用总结
  11. 手机虚拟摄像头_新游 | 打破次元壁障,《猪猪侠AR虚拟使命》现实约战,一切尽在创酷互动!...
  12. 降采样_嫦娥五号,欢迎回家!我国首次地外天体采样返回任务圆满完成
  13. Access链接表的使用
  14. javascript如何设置名字输入不合法
  15. redis报错: redis.exceptions.ResponseError: value is not an integer or out of range
  16. kx驱动中的DSP设置
  17. 2022.02.17学习总结(最小生成树)
  18. IDE SATA SCSI iSCSI等存储硬盘对比与分析
  19. 身份证中出生年月的提取
  20. 2022朝花夕拾-持续快速成长

热门文章

  1. 移动短信回执怎么开通_微信短视频直播怎么做?
  2. 幻塔html5,《幻塔》捏脸系统怎么玩 捏脸系统玩法分享
  3. php不兼容_怎么解决php不兼容问题
  4. 重置系统_WIN10系统如何创建密码重置盘
  5. 下列哪个滤波器是非线性的_上海海事数字信号处理2006试卷A参考答案
  6. mysql 不同服务器数据库表同步_mysql 不同服务器数据库表同步
  7. gifrecord可以卸载吗_频繁安装卸载 App,手机真能受得了吗?!
  8. 什么是端到端的训练或学习?
  9. [python][os]分离文件目录,文件名以及文件后缀
  10. 删除python读取的txt每一行尾部的\n