• 大小: 1002KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-06
  • 语言: Matlab
  • 标签: matlab  

资源简介

视频处理中常见的颜色空间是 RGB 、YUV、YIQ 和 YCrCb。它们在图像显示、信号表示、数据特性分析等方面各有特点。虽然各有不同,但可以相互转换。 (1) 分离出 RGB 三个分量,再从 RGB 分别转换成 YIQ,YUV、YCrCb 的各个分量。 (2) 分别计算 YIQ,YUV、YCrCb 颜色空间内三个分量图像(亮度分量、两个色度分量)之间 的相关系数、每个分量图像的熵。 (3) 将 YIQ,YUV、YCrCb 三种颜色空间之间相互转换,计算三种亮度分量之间的相关 系数,计算色度分量之间的相关系数。 (4) 分析并总结上述颜色转换和颜色分量的特性。 注意:本设计中不是使用 Matlab 自带的或者其他库函数实现颜色转换函数

资源截图

代码片段和文件信息

function ColorSpaceConversion(Nametype)
%% -----------------------------------------------
%  EXPLAIN: 颜色空间转换,RGB、YIQ,YUV、YCrCb四种不同的颜色空间相互转换,并输出每个颜色空间各分量的熵和相关系数
%  
%  INPUT:Name为输入图像的名称;
%        type为输入图像的颜色空间,可以取值为:“RGB”、“YIQ”、“YUV”和“YCrCb”忽略大小写
%  OUTPUT 相关系数文件:图_Name_各颜色空间各分量间的相关系数.txt;
%         各分量图像熵文件:图_Name_各颜色空间各分量图像的熵.txt
%  AUTHOR:Yang Hao
%  DATE: 2019/4/28
%% -----------------------------------------------

Image=imread(Name);
%% 判断输入图像的颜色空间,并作出相应的处理
if strcmpi(type‘RGB‘)%输入RGB
    R=Image(::1);%提取原图各分量
    G=Image(::2);
    B=Image(::3);

    [YiqIQ]=rgbtoyiq(RGB);% RGB转YIQ
    [YuvUV]=rgbtoyuv(RGB);% GRB转YUV
    [YcrcbCrCb]=rgbtoycrcb(RGB);%RGB转Ycrcb
elseif strcmpi(type‘YIQ‘)%输入YIQ
    Yiq=Image(::1);%提取原图各分量
    I=Image(::2);
    Q=Image(::3);

    [RGB]=yiqtorgb(YiqIQ);
    [YuvUV]=rgbtoyuv(RGB);
    [YcrcbCrCb]=rgbtoycrcb(RGB);
elseif strcmpi(type‘YUV‘)%输入YUV
    Yuv=Image(::1);%提取原图各分量
    U=Image(::2);
    V=Image(::3);

    [RGB]=yuvtorgb(YuvUV);
    [YiqIQ]=rgbtoyiq(RGB);
    [YcrcbCrCb]=rgbtoycrcb(RGB);
elseif strcmpi(type‘YCrCb‘)%输入YCrCb
    Ycrcb=Image(::1);%提取原图各分量
    Cr=Image(::2);
    Cb=Image(::3);

    [RGB]=ycrcbtorgb(YcrcbCrCb);
    [YiqIQ]=rgbtoyiq(RGB);
    [YuvUV]=rgbtoyuv(RGB);
else
    % 输入不是四种颜色空间的其中一种,则程序报错并退出
    error(‘Error! The color space you entered cannot be processed by this program please check the parameters!‘)
end


%% 计算各个颜色空间内各分量间的相关系数
%RGB空间
pR_G=corrcoef(double(R)double(G));
pR_B=corrcoef(double(R)double(B));
pG_B=corrcoef(double(G)double(B));
%YIQ空间
pYiq_I=corrcoef(double(Yiq)double(I));
pYiq_Q=corrcoef(double(Yiq)double(Q));
pI_Q=corrcoef(double(I)double(Q));
%YUV空间
pYuv_U=corrcoef(double(Yuv)double(U));
pYuv_V=corrcoef(double(Yuv)double(V));
pU_V=corrcoef(double(U)double(V));
%YCrCb空间
pYcrcb_Cr=corrcoef(double(Ycrcb)double(Cr));
pYcrcb_Cb=corrcoef(double(Ycrcb)double(Cb));
pCr_Cb=corrcoef(double(Cr)double(Cb));

%% 计算各个颜色空间内各分量图像的熵 ent:entropy
%RGB空间
entR=entropy(R);
entG=entropy(G);
entB=entropy(B);
%YIQ空间
entYiq=entropy(Yiq);
entI=entropy(I);
entQ=entropy(Q);
%YUV空间
entYuv=entropy(Yuv);
entU=entropy(U);
entV=entropy(V);
%Ycrcb空间
entYcrcb=entropy(Ycrcb);
entCr=entropy(Cr);
entCb=entropy(Cb);

%% 数据输出,将相关系数结果写入文件
fid = fopen([‘图_‘Name(1:end-4)‘_各颜色空间各分量间的相关系数.txt‘] ‘wt‘);  
fprintf(fid‘各个颜色空间内的各分量间的相关系数如下:\n\n‘); 
fprintf(fid‘RGB颜色空间内:\n‘); 
fprintf(fid‘\tR与G的相关系数\t%.4f\n‘ pR_G(2)); 
fprintf(fid‘\tR与B的相关系数\t%.4f\n‘ pR_B(2)); 
fprintf(fid‘\tG与B的相关系数\t%.4f\n‘ pG_B(2)); 

fprintf(fid‘YIQ颜色空间内:\n‘); 
fprintf(fid‘\tY与I的相关系数\t%.4f\n‘ pYiq_I(2)); 
fprintf(fid‘\tY与Q的相关系数\t%.4f\n‘ pYiq_Q(2)); 
fprintf(fid‘\tI与Q的相关系数\t%.4f\n‘ pI_Q(2)); 

fprintf(fid‘YUV颜色空间内:\n‘); 
fprintf(fid‘\tY与U的相关系数\t%.4f\n‘ pYuv_U(2)); 
fprintf(fid‘\tY与V的相关系数\t%.4f\n‘ pYuv_V(2)); 
fprintf(fid‘\tU与V的相关系数\t%.4f\

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-05-23 10:44  颜色空间的转换\
     文件      977675  2019-04-28 05:40  颜色空间的转换\A.jpg
     文件       46946  2019-04-28 13:53  颜色空间的转换\B.jpg
     文件        8202  2019-04-28 14:45  颜色空间的转换\ColorSpaceConversion.m

评论

共有 条评论