颜色匹配 Matlab版本

本文介绍了使用Matlab进行颜色匹配的方法,主要涉及HSV空间下的S、V通道匹配。首先将RGB图像转换为HSV图像,然后通过计算直方图、均值和方差进行匹配。在HSV空间中对S、V通道应用线性映射,最后将匹配后的HSV图像转换回RGB空间。文章提到了在实现过程中需要注意的变量名错误和映射代码逻辑问题,并给出了HSV空间匹配部分的代码示例。
摘要由CSDN通过智能技术生成

在直方图的基础之上,考虑均值方差匹配(本质上根据直方图完成一次线性映射,y=kx+b;),来达到颜色匹配的效果。(颜色匹配在PS软件上也有类似功能)

匹配分为两个阶段:第一阶段,在HSV空间下对S、V通道进行匹配,H通道不变。会有些许色片。(对于HSV空间的理解,此处不足解释,自己查阅资料看)

第二阶段,将HSV空间下做好的匹配图转换到RGB空间下,在对R、G、B三通道分别进行匹配。这样就完成了。

过程中(指导老师提供了思想),遇到问题冷静思考解决,一步步去测试(直方图、均值、方差、映射系数、映射矩阵。。。)

自己碰到的麻烦;变量名的误写,最终的映射代码逻辑写反了(这个逻辑读者一定要注意)。

以下只给出HSV空间下的匹配代码(RGB空间用到的匹配思想是一样的,读者自行学习编写):

clear all;
close all;
clc;
%注意点乘和乘的区别
src=imread('E:\毕设图片\颜色匹配\source.jpg');
tar=imread('E:\毕设图片\颜色匹配\target.jpg');
src=mat2gray(src);
tar=mat2gray(tar);%归一化
[m,n,dim]=size(src);
[m,n,dim]=size(tar);


%%读取待匹配图像,将其的RGB转换成HSV
src_R=src(:,:,1);
src_G=src(:,:,2);
src_B=src(:,:,3);
%RGB—>HSV
src_H=zeros(m,n);   %色相角
src_S=zeros(m,n);   %饱和度
src_V=zeros(m,n);   %明度
for i=1:m
   for j=1:n
       r=src_R(i,j);
       g=src_G(i,j);
       b=src_B(i,j);
       MAX=max([r,g,b]);
       MIN=min([r,g,b]);


       if MAX==MIN
            src_H(i,j)=0;
       elseif MAX==r && g>=b
            src_H(i,j)=60*(g-b)/(MAX-MIN);
       elseif MAX==r && g<b
            src_H(i,j)=60*(g-b)/(MAX-MIN)+360;
       elseif MAX==g
            src_H(i,j)=60*(b-r)/(MAX-MIN)+120;
       elseif MAX==b
            src_H(i,j)=60*(r-g)/(MAX-MIN)+240;
       end


       if MAX==0
            src_S(i,j)=0;
       else
            src_S(i,j)=1-MIN/MAX;
       end
     

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值