资源简介
视频处理中常见的颜色空间是 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
- 上一篇:离散点云三维重建matlab程序
- 下一篇:DMC控制算法
相关资源
- 离散点云三维重建matlab程序
- 纹理图像分割Matlab源代码 PDF PPT
- libsvm - 支持多类别分类的svm工具箱m
- matlab实现三维点云三角化
- EMD HHT Matlab 信号分析,Google英文原版
- 数字图像处理常用测试图片part6
- matlab GUI制作的播放器
- SIFT特征匹配 MATLAB 实现
- 图像分块BCS稀疏表示与重建
- K均值聚类算法,图像处理,GUI,mat
- MATLAB在卡尔曼滤波器中应用的理论与
- 智能控制及matlab仿真实验知道
- 经典SVM算法的MATLAB程序
- FASTICA盲源信号分离代码Matlab
-
simuli
nk和pspice的接口程序 - 《全面详解LTE:MATLAB建模、仿真与实
- KPCA matlab实现
- matlab实现视频动态物体检测与追踪
- 基于变分水平集的图像分割
- stk-matlab connectors 1.0.4
- Marine Systems Simulator(gnc)
- matlab和ansys振动仿真
- Qt 5.9 与 matlab 2017b 混合编程基本流程
- 802.11n信道模型
- cordic算法的matlab仿真和verilog的实现
- 戈泽尔算法源程序
- XXXXXXRobustControlDesignwithMATLAB.pdf
- USB CAN 二次开发源代码 matlab版本Demo
- 十分钟搞定matlab GUI
- 克里金插值法MATLAB工具箱
评论
共有 条评论