Matlab底层算法实现基于动态阈值的自动白平衡算法
公式
原文链接
Matlab源码
%%%%%%%%%%%%%%%基于动态阈值的自动白平衡算法实现
clc;
image=imread('D:\lena1.png');
%分离出RGB三通道矩阵
r_matrix=image(:,:,1);
g_matrix=image(:,:,2);
b_matrix=image(:,:,3);%将RGB空间转化成YCbCr空间
Y_matrix=0.299.*r_matrix+0.587.*g_matrix+0.114.*b_matrix;
Cb_matrix=-0.172.*r_matrix-0.339.*g_matrix+0.511.*b_matrix+128;
Cr_matrix=0.511.*r_matrix-0.428.*g_matrix-0.083.*b_matrix+128;[height,width,channels]=size(image);
%计算Cb,Cr的均值
Mb=mean(mean(Cb_matrix));
Mr=mean(mean(Cr_matrix));
%计算Cb,Cr的均方差Db,Dr
Db=sum(sum(Cb_matrix-Mb))/(width*height);
Dr=sum(sum(Cr_matrix-Mr))/(width*height);
%根据阈值的要求提取出near_white区域的像素点
%C_matrix是提取出来的像素点矩阵
num=1;
Tst_matrix=zeros(height,width);for i=1:heightfor j=1:widthb1_tmp=Cb_matrix(i,j)-(Mb+Db*sign(Mb));b2_tmp=Cr_matrix(i,j)-(1.5*Mr+Dr*sign(Mr));if(b1_tmp<abs(1.5*Db) && b2_tmp<abs(1.5*Dr))C_matrix(num)=Y_matrix(i,j);Tst_matrix(i,j)=Y_matrix(i,j);num=num+1;endend
end
num=num-1;
Iy_matrix=sort(C_matrix,'descend'); %将提取出来的像素矩阵从大往小排序
n=round(num/10);
C_matrix_2(1:n)=Iy_matrix(1:n); %提取前百分之十的像素点
min_number=min(C_matrix_2);for i=1:heightfor j=1:widthif Tst_matrix(i,j)<min_numberTst_matrix(i,j)=0;elseTst_matrix(i,j)=1;endend
endr_matrix=double(r_matrix).*Tst_matrix;
g_matrix=double(g_matrix).*Tst_matrix;
b_matrix=double(b_matrix).*Tst_matrix;%计算参考白点的RGB的均值
Ravg=mean(mean(r_matrix));
Gavg=mean(mean(g_matrix));
Bavg=mean(mean(b_matrix));
Ymax_num=double(max(max(Y_matrix)))/15;
%计算RGB三通道的增益
Rgainvalue=Ymax_num/Ravg;
Ggainvalue=Ymax_num/Gavg;
Bgainvalue=Ymax_num/Bavg;
%通过增益调整图像的三通道
r_matrix=image(:,:,1)*Rgainvalue;
g_matrix=image(:,:,2)*Ggainvalue;
b_matrix=image(:,:,3)*Bgainvalue;
%合并三通道矩阵
RGB_white=cat(3,r_matrix,g_matrix,b_matrix);
RGB_white_out=uint8(RGB_white);
%显示
subplot(1,2,1);
imshow(image);
subplot(1,2,2);
imshow(RGB_white_out);
效果图
Matlab底层算法实现基于动态阈值的自动白平衡算法相关推荐
- 基于动态阈值、灰色世界、镜面法的自动白平衡
白平衡是图像处理的一个极重要概念.所谓白平衡(White Balance),就是对白色物体的还原.当我们用肉眼观看这大千世界时,在不同的光线下,对相同的颜色的感觉基本是相同的,比如在早晨旭日初升时,我 ...
- 聚类——基于距离阈值的聚类算法
基于距离阈值的聚类算法 1.最大最小距离算法 算法思想 对待分类模式样本集以最大距离选取新的聚类中心,以最小距离原则进行模式归类. 算法步骤 从N个样本集中的任选取一个样本,作为第一个聚类中心 z 1 ...
- [推荐算法]ItemCF,基于物品的协同过滤算法
[推荐算法]ItemCF,基于物品的协同过滤算法 标签: ItemCF基于用户的协同过滤算法 2015-03-09 15:11 4144人阅读 评论(1) 收藏 举报 本文章已收录于: 分类: ...
- 推荐算法概述(基于用户的协同过滤算法、基于物品的协同过滤算法、基于内容的推荐算法)
"无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程." 目前推 ...
- matlab图像压缩像素编码,基于DCT的图像压缩编码算法的MATLAB实现
基于DCT的图像压缩编码算法的MATLAB实现 摘要 随着科学技术的发展,图像压缩技术越来越引起人们的关注.为此从众多的图像压缩编码标准中选取了基于DCT变换的JPEG图像压缩编码算法进行研究,并通过 ...
- 【智能优化算法】基于沙猫群优化算法求解单目标优化问题附matlab代码
1 内容介绍 这项研究提出了一种新的元启发式算法,称为沙猫群优化 (SCSO),它模仿试图在自然界中生存的沙猫行为.这些猫能够探测到低于 2 kHz 的低频,并且具有难以置信的挖掘猎物的能力.受这两个 ...
- 基于动态阈值检测丝网破损
如有问题请联系:clr_mv@163.com 更多文章请关注微信公众号:机器视觉专业论坛 在实际应用中,得到的图像的阈值不太理想时通过固定阈值分割很难得到所要提取的特征,因此Halcon中含有动态阈值 ...
- 推荐系统-经典协同过滤算法【基于记忆的协同过滤算法、基于模型的协同过滤算法】
推荐系统-经典协同过滤理论基础实践 1.协同过滤推荐方法CF简介 协同过滤CF 基于记忆的协同过滤 ---- 用户和物品的相似度矩阵 用户相似度的推荐 物品相似度推荐 UserCF用户协同过滤算法 I ...
- python回归算法_基于Python的函数回归算法验证
看机器学习看到了回归函数,看了一半看不下去了,看到能用方差进行函数回归,又手痒痒了,自己推公式写代码验证: 常见的最小二乘法是一阶函数回归 回归方法就是寻找方差的最小值 y = kx + b xi, ...
最新文章
- .net Core学习笔记:Windows环境搭建
- Python学习资源 | 3个高性能开源计算机视觉库
- c mysql封装 jdbc_彻底封装JDBC操作MySQL的连接。
- 全球及中国食品供应区块链行业运行形势及未来投资规模建议报告2021年版
- 阿里云IoT戴高:IoT场景化的本质是打造数智空间
- 九度oj 题目1537:买卖股票
- 关于数据库查询优化的思考
- IE6下PNG图片透明效果(PNG图片做背景也可以)
- 应用容灾中,MySQL数据表是否需要跨云同步?
- 部署Nginx+Keepalived
- Iroha and Haiku II
- Spring pom配置详解(转)
- 爱思助手从苹果服务器shsh失败,爱思助手无法提取SHSH降级iOS6.1.2固件教程
- 13异步多线程(三)Parallel,线程安全
- 再也不担心写出臃肿的Flink流处理程序啦,发现一款将Flink与Spring生态完美融合的脚手架工程-懒松鼠Flink-Boot
- has leaked window com.android.internal.policy.impl.PhoneWindow解决(Dialog.cancel、dismiss、hide区别)
- 2021年5月19日最新快手半自动刷金币
- ucr计算机专业学生吧,在UCR商学院的成长记忆
- 这些“新职业”到底好不好干?听听过来人怎么说
- 互联网测试必须要知道的App稳定性测试