RGB图和HSI图转换.docx
- 文档编号:30711956
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:15
- 大小:251.79KB
RGB图和HSI图转换.docx
《RGB图和HSI图转换.docx》由会员分享,可在线阅读,更多相关《RGB图和HSI图转换.docx(15页珍藏版)》请在冰豆网上搜索。
RGB图和HSI图转换
摘要
所谓彩色模型就是指摸个三维颜色空间中的一个可见光子集。
它包含某个颜色域的所有颜色。
例如,RGB颜色模型就是三维直角坐标颜色系统的一个单位正方体。
颜色模型的用途是在某个颜色域内方便的制定颜色,由于每一个颜色域都是可见光的子集,所以任何一个颜色模型都无法包含所有得可见光。
在大多数的颜色图形显示设备一般都是使用红、绿、蓝三原色,我们的真实感图形学中的主要的颜色模型也是RGB模型,但是红、绿、蓝颜色模型用起来不太方便,它与直观的颜色概念如色调、饱和度和亮度等没有直接的联系。
计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R、G、B相加混色的原理。
通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光尔产生色彩的。
这种色彩的表示方法称为RGB色彩空间表示。
HSV颜色模型中颜色的参数分别是:
色彩,纯度,明度。
HSV模型的三维表示是一种比较直观的颜色模型,在许多图形编辑工具中应用比较广泛。
如Photoshop等等。
但这也决定了他不适合使用在光照模型中。
YCbCr是DVD、摄像机、数字电视等消费类视频产品中,常用的色彩编码方案。
YCbCr有时也会称为YCC。
YCbCr在模拟分量视频中也常被称为YPbpr。
关键词:
颜色模型;RGB;HSV;YCbCr
2课程设计要求1
3MATLAB简介2
3.1MATLAB主要功能2
3.2MATLAB优势2
3.2.1工作平台和编程环境2
3.2.2程序语言3
3.2.3科学计算机数据处理能力3
3.2.4图形处理功能3
3.2.5模块集合工具箱4
3.3MATLAB函数与数据类型4
4设计方案4
5程序编码5
5.1将RGB图像与HSI图像互相转换5
5.2将RGB图像转换到NTSC图像8
6仿真结果9
7结论11
8参考文献12
1课程设计目的
彩色模型也称为彩色空间或彩色系统,是描述色彩的一种方法。
我们用它来制定、生产、可视化一种色彩。
目前表达颜色的色彩模型有许多种,他们是根据不同的应用目的而提出的。
在数字图形处理中,实际上最常用的彩色模型是RGB模型、HSI模型。
前者主要是应用于彩色显示屏和彩色视频摄像机;后者更符合人类描述和解释颜色的方式。
为了图像处理的目的,有必要在RGB和HSI、RGB和NTSC这两种彩色模型之间进行坐标转化。
本次课程设计的目的在于提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。
熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。
综合运用MATLAB工具箱实现图像处理的GUI程序设计。
2课程设计要求
利用所学的数字图像处理技术,建立实现某一个主题处理的系统,利用MATLAB软件系统来实现图像的模型转换,要求:
1、熟悉和掌握MATLAB程序设计方法;
3、学习和熟悉MATLAB图像处理工具箱;
4、学会运用MATLAB工具箱对图像进行处理和分析;
6、能对图像jpg格式进行打开、保存、另存、退出等功能操作;
7、利用所学数字图像处理技术知识、MATLAB软件对图像进行RGB与HSI互相转换,RGB和NTSC进行互换;
8、在程序开发时,必须清楚主要实现函数目的和作用,需要在程序书写时做适当注释说明,理解每一句函数的具体意义和使用范围;
9、图像完全进行彩色模型的转换。
3MATLAB简介
MATLAB是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。
目前,已成为工程领域中较常用的软件工具包之一。
3.1MATLAB主要功能
它是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
使用它,可以较使用传统的编程语言,如C、C++等,更快的解决技术计算问题。
高级语言可用于技术计算;开发环境可对代码、文件和数据进行管理;数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等;二维和三维图形函数可用于可视化数据;各种工具可用于构建自定义的图形用户界面;各种函数可将基于MATLAB的算法与外部应用程序和语言;其应用范围非常广,包括信号和图像处理、通迅、控制系统设计、测试和测量等众多应用领域。
3.2MATLAB优势
3.2.1工作平台和编程环境
MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。
简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
3.2.2程序语言
MATLAB一个高级的矩阵语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单。
使之更利于非计算机专业的科技人员使用。
而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
3.2.3科学计算机数据处理能力
MATLAB是一个包含大量算法的集合。
其可以快捷的实现用户所需的各种计算功能。
函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和差错处理。
在通常情况下,可以用它来代替底层编程语言,如C和C++。
在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。
函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
3.2.4图形处理功能
图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。
高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。
可用于科学计算和工程绘图。
新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。
同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。
另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
3.2.5模块集合工具箱
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。
一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。
目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
3.3MATLAB函数与数据类型
它提供了以下类型的函数,用于执行数学运算和数据分析:
·矩阵操作和线性代数
·多项式和内插
·傅立叶分析和筛选
·数据分析和统计
·优化和数值积分
MATLAB可对包括双精度浮点数、单精度浮点数和整型在内的多种数据类型进行运算。
附加的工具箱提供了专门的数学计算函数,用于包括信号处理、优化、统计、符号数学、偏微分方程求解以及曲线拟合在内的各个领域。
MATLAB中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。
4设计方案
利用MATLAB图像处理工具箱,设计自己的Photoshop,实现图像彩色模型之间的转换。
要求:
按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。
然后按照自己拟定的功能要求进行程序设计和调试。
1)图像的读取和保存。
2)编写程序,通过转换公式,以实现图像彩色之间的转换。
3)将一个RGB图像转换为HSI图像。
4)将一个HSI图像转换为RGB图像。
5)RGB颜色空间转换到NTSC颜色空间
6)有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰度级。
7)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
8)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。
5程序设计
5.1将RGB图像与HSI图像互相转换
%将RGB图像转换为HSI图像
%显示HSI图像
%直方图均衡化HSI图像
%将HSI图像转换回RGB图像
functionrgbtohsi(x)
F=imread(x);
F=im2double(F);
r=F(:
:
1);
g=F(:
:
2);
b=F(:
:
3);
th=acos((0.5*((r-g)+(r-b)))/((sqrt((r-g).^2+(r-b).*(g-b)))+eps));
H=th;
H(b>g)=2*pi-H(b>g);
H=H/(2*pi);
S=1-3.*(min(min(r,g),b))/(r+g+b+eps);
I=(r+g+b)/3;
hsi=cat(3,H,S,I);
HE=H*2*pi;
HE=histeq(HE);
HE=HE/(2*pi);
SE=histeq(S);
IE=histeq(I);
choice=input('1:
RGB转换为HSI\n2:
显示HSI图像\n3:
HSI转换为RGB图像\n4:
色调均衡\n5:
饱和度均衡\n6:
亮度均衡\n7:
HSI均衡\n输入您的选择:
');
switchchoice
case1
figure,imshow(F),title('RGB图像');
figure,imshow(hsi),title('HSI图像');
case2
figure,imshow(F),title('RGB图像');
figure,imshow(H),title('Hue图像');
figure,imshow(S),title('饱和度图像');
figure,imshow(I),title('亮度图像');
case3
C=hsitorgb(hsi);
figure,imshow(hsi),title('HSI图像');
figure,imshow(C),title('RGB图像');
case4
RV=cat(3,HE,S,I);
C=hsitorgb(RV);
figure,imshow(hsi),title('HSI图像');
figure,imshow(F),title('RGB图像');
figure,imshow(C),title('RGBImage-HueEqualized');
case5
RV=cat(3,H,SE,I);
C=hsitorgb(RV);
figure,imshow(hsi),title('HSI图像');
figure,imshow(F),title('RGB图像');
figure,imshow(C),title('RGB饱和度均衡');
case6
RV=cat(3,H,S,IE);
C=hsitorgb(RV);
figure,imshow(hsi),title('HSI图像');
figure,imshow(F),title('RGB图像');
figure,imshow(C),title('RGB亮度均衡');
case7
RV=cat(3,HE,SE,IE);
C=hsitorgb(RV);
figure,imshow(hsi),title('HSI图像');
figure,imshow(F),title('RGB图像');
figure,imshow(C),title('RGBHSI均衡');
otherwise
display('选择错误');
end
end
%函数,将HSI图像转换为RGB图像
functionC=hsitorgb(hsi)
HV=hsi(:
:
1)*2*pi;
SV=hsi(:
:
2);
IV=hsi(:
:
3);
R=zeros(size(HV));
G=zeros(size(HV));
B=zeros(size(HV));
%RGSector
id=find((0<=HV)&(HV<2*pi/3));
B(id)=IV(id)*(1-SV(id));
R(id)=IV(id)*(1+SV(id)*cos(HV(id))/cos(pi/3-HV(id)));
G(id)=3*IV(id)-(R(id)+B(id));
%BGSector
id=find((2*pi/3<=HV)&(HV<4*pi/3));
R(id)=IV(id).*(1-SV(id));
G(id)=IV(id).*(1+SV(id)*cos(HV(id)-2*pi/3)/cos(pi-HV(id)));
B(id)=3*IV(id)-(R(id)+G(id));
%BRSector
id=find((4*pi/3<=HV)&(HV<2*pi));
G(id)=IV(id)*(1-SV(id));
B(id)=IV(id)*(1+SV(id)*cos(HV(id)-4*pi/3)/cos(5*pi/3-HV(id)));
R(id)=3*IV(id)-(G(id)+B(id));
C=cat(3,R,G,B);
C=max(min(C,1),0);
end
5.2将RGB图像转换到NTSC图像
RGB颜色空间转换到NTSC颜色空间
格式:
YIQ=rgb2ntsc(RGB)
【说明】表示将RGB图像转换为NTSC图像
【输入】RGB为double、uint8或uint16类型
【输出】YIQ为double类型
CLF,RGB=imread('F:
\课程设计\Home.jpg');
YIQ=rgb2ntsc(RGB);
subplot(2,3,1);subimage(RGB);title('RGB图像')
subplot(2,3,3);subimage(mat2gray(YIQ));title('NTSC图像')
subplot(2,3,4);subimage(mat2gray(YIQ(:
:
1)));title('Y分量')
subplot(2,3,5);subimage(mat2gray(YIQ(:
:
2)));title('I分量')
subplot(2,3,6);subimage(mat2gray(YIQ(:
:
3)));title('Q分量')
6仿真结果
(1)CommandWindow窗口的显示结果:
图6.1
(2)RGB图像转换为HSI图像
(3)显示HSI图像
(4)HSI转换RGB图像
(5)RGB颜色空间转换到NTSC颜色空间
结论
MATLAB不仅具有强大的数值运算功能,也同样具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的可视化。
计算的可视化可以将杂乱的数据通过图形表示从中观察出其内在的关系。
MATLAB的图形命令格式简单,可以使用不同的线形、彩色、数据点标记等来修饰图像,也可以设计出图形用户界面,方便地进行人机交互。
(1)由于MATLAB函数众多,而且课本上提供的都是最基本的函数功能,自己不仅要去图书馆借这方面的专业书籍来阅读。
而且许多函数的编写都要用到C语言,对C语言也有一定得要求。
例如边缘检测函数的实现,在建立了BUTTONGROUP之后,添加RADIOBUTTON按钮,然后右键调用SelectionChangeFcn,弹出M文件,在相应的地方编写。
globaly
(2)由于不同版本的MATLAB可能不兼容,特别是高版本的在低版本的MATLAB中几乎打不开,而只是一堆乱码。
所以我想能不能把figure文件转换成可执行文件exe。
在查阅了相关资料后发现可以转换。
在打开可执行文件时虽然不比安装MATLAB,但是需要安装相应的补丁来支持底层文件才能执行。
(3)通过本次课程设计,使自己对MATLABGUI设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。
在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。
参考文献
[1]孙学军等.通信原理[M].电子工业出版社,2001:
78-104.
[2]曹志刚等.现代通信原理[M].清华大学出版社,2008:
66-89.
[3]葛哲学.精通MATLAB[M].电子工业出版社,2008:
2-8.
[4]张圣勤.MATLAB7.0实用教程[M].机器工业出版社,2006:
90-118.
[5]樊昌信,曹丽娜.通信原理[M].国防工业出版社,2008:
132-158.
[6]苗云长.现代通信原理及应用[M].电子工业出版社,2005:
30-40.
[7]张传生.数字通信原理[M].西安交通大学出版社,2001:
55-60.
[8]阮沈勇.MATLAB程序设计[M].电子工业出版社,2004:
70-85.
[9]约翰.G.普罗克斯,马苏德.萨勒赫著.刘树棠译.现在通信系统—使用MATLAB[M].西安交通大学出版社,2001:
55-65.
[10]罗新民,张传生,薛少丽.现代通信原理[M].高等教育出版社,2003:
65-78
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RGB HSI 转换