资源简介
视频处理中常见的颜色空间是 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_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论