当前位置:首页 >> 理学 >>

RGB图和HSI图转换_图文

数字图像处理课程设计
摘要
所谓彩色模型就是指摸个三维颜色空间中的一个可见光子集。它包含某个颜 色域的所有颜色。例如,RGB 颜色模型就是三维直角坐标颜色系统的一个单位 正方体。颜色模型的用途是在某个颜色域内方便的制定颜色,由于每一个颜色域 都是可见光的子集,所以任何一个颜色模型都无法包含所有得可见光。在大多数 的颜色图形显示设备一般都是使用红、绿、蓝三原色,我们的真实感图形学中的 主要的颜色模型也是 RGB 模型,但是红、绿、蓝颜色模型用起来不太方便,它 与直观的颜色概念如色调、饱和度和亮度等没有直接的联系。
计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用 R、G、B 相加混色的原理。通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、 蓝磷光材料发光尔产生色彩的。这种色彩的表示方法称为 RGB 色彩空间表示。 HSV 颜色模型中颜色的参数分别是:色彩,纯度,明度。HSV 模型的三维表示 是一种比较直观的颜色模型,在许多图形编辑工具中应用比较广泛。如 Photoshop 等等。但这也决定了他不适合使用在光照模型中。YCbCr 是 DVD、摄像机、数 字电视等消费类视频产品中,常用的色彩编码方案。YCbCr 有时也会称为 YCC。 YCbCr 在模拟分量视频中也常被称为 YPbpr。
关键词:颜色模型;RGB;HSV;YCbCr
I

数字图像处理课程设计
目录
1 课程设计目的.....................................................................................错误!未定义书签。 2 课程设计要求....................................................................................................................................... 1 3 MATLAB 简介..........................................................................................................................2
3.1 MATLAB 主要功能...................................................................................................................... 2 3.2 MATLAB 优势................................................................................................................2
3.2.1 工作平台和编程环境.......................................................................................2 3.2.2 程序语言...........................................................................................................3 3.2.3 科学计算机数据处理能力.................................................................................3 3.2.4 图形处理功能 ................................................................................................................. 3 3.2.5 模块集合工具箱.............................................................................................................. 4 3.3 MATLAB 函数与数据类型 ........................................................................................................ 4 4 设计方案...............................................................................................................................4 5 程序编码...............................................................................................................................5 5.1 将 RGB 图像与 HSI 图像互相转换..........................................................................5 5.2 将 RGB 图像转换到 NTSC 图像...................................................................................8 6 仿真结果...............................................................................................................................9 7 结论..................................................................................................................................... 11 8 参考文献.............................................................................................................................12
II

数字图像处理课程设计
1 课程设计目的
彩色模型也称为彩色空间或彩色系统,是描述色彩的一种方法。我们用它 来制定、生产、可视化一种色彩。目前表达颜色的色彩模型有许多种,他们是根 据不同的应用目的而提出的。在数字图形处理中,实际上最常用的彩色模型是 RGB 模型、HSI 模型。前者主要是应用于彩色显示屏和彩色视频摄像机;后者 更符合人类描述和解释颜色的方式。
为了图像处理的目的,有必要在 RGB 和 HSI、RGB 和 NTSC 这两种彩色模 型之间进行坐标转化。本次课程设计的目的在于提高分析问题、解决问题的能力, 进一步巩固数字图像处理系统中的基本原理与方法。熟悉掌握一门计算机语言, 可以进行数字图像的应用处理的开发设计。综合运用 MATLAB 工具箱实现图像 处理的 GUI 程序设计。
1

数字图像处理课程设计
2 课程设计要求
利用所学的数字图像处理技术,建立实现某一个主题处理的系统,利用 MATLAB 软件系统来实现图像的模型转换,要求:
1、熟悉和掌握 MATLAB 程序设计方法; 3、学习和熟悉 MATLAB 图像处理工具箱; 4、学会运用 MATLAB 工具箱对图像进行处理和分析; 6、能对图像 jpg 格式进行打开、保存、另存、退出等功能操作; 7、利用所学数字图像处理技术知识、MATLAB 软件对图像进行 RGB 与 HSI
互相转换,RGB 和 NTSC 进行互换; 8、在程序开发时,必须清楚主要实现函数目的和作用,需要在程序书写时
做适当注释说明,理解每一句函数的具体意义和使用范围; 9、图像完全进行彩色模型的转换。
2

3 MATLAB 简介

数字图像处理课程设计

MATLAB 是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包, 包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、 方程求根、优化计算及函数求导积分符号运算等;同时还提供了编程计算的编程 特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出 结果可视化。目前,已成为工程领域中较常用的软件工具包之一。

3.1 MATLAB 主要功能

它是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计 算语言和交互式环境。使用它,可以较使用传统的编程语言,如 C、C++等,更 快的解决技术计算问题。
高级语言可用于技术计算;开发环境可对代码、文件和数据进行管理;数学 函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等;二维和 三维图形函数可用于可视化数据;各种工具可用于构建自定义的图形用户界面; 各种函数可将基于 MATLAB 的算法与外部应用程序和语言;其应用范围非常广, 包括信号和图像处理、通迅、控制系统设计、测试和测量等众多应用领域。
3.2 MATLAB 优势
3.2.1 工作平台和编程环境
MATLAB 由一系列工具组成。这些工具方便用户使用 MATLAB 的函数和文 件,其中许多工具采用的是图形用户界面。包括 MATLAB 桌面和命令窗口、历 史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件 的浏览器。随着 MATLAB 的商业化以及软件本身的不断升级,MATLAB 的用户 界面也越来越精致,更加接近 Windows 的标准界面,人机交互性更强,操作更 简单。而且新版本的 MATLAB 提供了完整的联机查询、帮助系统,极大的方便 了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译 就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

3

3.2.2 程序语言

数字图像处理课程设计

MATLAB 一个高级的矩阵语言,它包含控制语句、函数、数据结构、输入和 输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步, 也可以先编写好一个较大的复杂的应用程序(M 文件)后再一起运行。新版本的 MATLAB 语言是基于最为流行的 C++语言基础上的,因此语法特征与 C++语言 极为相似,而且更加简单。使之更利于非计算机专业的科技人员使用。而且这种 语言可移植性好、可拓展性极强,这也是 MATLAB 能够深入到科学研究及工程计 算各个领域的重要原因。
3.2.3 科学计算机数据处理能力

MATLAB 是一个包含大量算法的集合。其可以快捷的实现用户所需的各种计 算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过 了各种优化和差错处理。在通常情况下,可以用它来代替底层编程语言,如 C 和 C++ 。在计算要求相同的情况下,使用 MATLAB 的编程工作量会大大减少。 MATLAB 的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速 傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组 的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统 计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他 初等数学运算、多维数组操作以及建模动态仿真等。
3.2.4 图形处理功能

图形处理功能 MATLAB 自产生之日起就具有方便的数据可视化功能,以将向 量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括 二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘 图。新版本的 MATLAB 对整个图形处理功能作了很大的改进和完善,使它不仅在 一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等) 方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色 度处理以及四维数据的表现等),MATLAB 同样表现了出色的处理能力。同时对一 些特殊的可视化要求,例如图形对话等,MATLAB 也有相应的功能函数,保证了

4

数字图像处理课程设计
用户不同层次的要求。另外新版本的 MATLAB 还着重在图形用户界面(GUI)的制 作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
3.2.5 模块集合工具箱
MATLAB 对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说, 它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估 不同的方法而不需要自己编写代码。目前,MATLAB 已经把工具箱延伸到了科学 研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、 优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统 辨识、控制系统设计、LMI 控制、鲁棒控制、模型预测、模糊逻辑、金融分析、 地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定 点仿真、DSP 与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自 己的一席之地。
3.3 MATLAB 函数与数据类型
它提供了以下类型的函数,用于执行数学运算和数据分析: ·矩阵操作和线性代数 ·多项式和内插 ·傅立叶分析和筛选 ·数据分析和统计 ·优化和数值积分
MATLAB 可对包括双精度浮点数、单精度浮点数和整型在内的多种数据类型 进行运算。附加的工具箱提供了专门的数学计算函数,用于包括信号处理、优化、 统计、符号数学、偏微分方程求解以及曲线拟合在内的各个领域。
MATLAB 中有 15 种基本数据类型,主要是整型、浮点、逻辑、字符、日期和 时间、结构数组、单元格数组以及函数句柄等。
5

4 设计方案

数字图像处理课程设计

利用 MATLAB 图像处理工具箱,设计自己的 Photoshop,实现图像彩色模型 之间的转换 。
要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出 设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。
1)图像的读取和保存。 2) 编写程序,通过转换公式,以实现图像彩色之间的转换。 3) 将一个 RGB 图像转换为 HSI 图像。 4) 将一个 HSI 图像转换为 RGB 图像。 5) RGB 颜色空间转换到 NTSC 颜色空间 6) 有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰 度级。 7)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调 整,显示和对比变换前后的图像。 8)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存 该选择区域。

6

5 程序设计

数字图像处理课程设计

5.1 将 RGB 图像与 HSI 图像互相转换
%将 RGB 图像转换为 HSI 图像 %显示 HSI 图像 %直方图均衡化 HSI 图像 %将 HSI 图像转换回 RGB 图像
function rgbtohsi(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 输入您 的选 择 :'); switch choice
7

数字图像处理课程设计
case 1 figure,imshow(F),title('RGB 图像'); figure, imshow(hsi),title('HSI 图像'); case 2 figure,imshow(F),title('RGB 图像'); figure, imshow(H),title('Hue 图像'); figure, imshow(S),title('饱和度图像'); figure, imshow(I),title('亮度图像'); case 3 C=hsitorgb(hsi); figure,imshow(hsi),title('HSI 图像'); figure, imshow(C),title('RGB 图像'); case 4 RV=cat(3,HE,S,I); C=hsitorgb(RV); figure,imshow(hsi),title('HSI 图像'); figure,imshow(F),title('RGB 图像'); figure, imshow(C),title('RGB Image-Hue Equalized'); case 5 RV=cat(3,H,SE,I); C=hsitorgb(RV); figure,imshow(hsi),title('HSI 图像'); figure,imshow(F),title('RGB 图像'); figure, imshow(C),title('RGB 饱和度均衡'); case 6 RV=cat(3,H,S,IE); C=hsitorgb(RV); figure,imshow(hsi),title('HSI 图像'); figure,imshow(F),title('RGB 图像'); figure, imshow(C),title('RGB 亮度均衡'); case 7
8

数字图像处理课程设计
RV=cat(3,HE,SE,IE); C=hsitorgb(RV); figure,imshow(hsi),title('HSI 图像'); figure,imshow(F),title('RGB 图像'); figure, imshow(C),title('RGB HSI 均衡'); otherwise display('选择错误'); end end
%函数,将 HSI 图像转换为 RGB 图像 function C=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)); %RG Sector 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));
%BG Sector 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)); %BR Sector id=find((4*pi/3<=HV)& (HV<2*pi));
9

数字图像处理课程设计
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分量')
10

6 仿真结果

数字图像处理课程设计

(1)Command Window 窗口的显示结果:

(2)RGB 图像转换为 HSI 图像

图 6.1

(3)显示 HSI 图像
11

数字图像处理课程设计
(4)HSI 转换 RGB 图像
12

数字图像处理课程设计
(5)RGB 颜色空间转换到 NTSC 颜色空间
13

数字图像处理课程设计
结论
MATLAB 不仅具有强大的数值运算功能,也同样具有非常强大的二维和三 维绘图功能,尤其擅长于各种科学运算结果的可视化。计算的可视化可以将杂乱 的数据通过图形表示从中观察出其内在的关系。MATLAB 的图形命令格式简单, 可以使用不同的线形、彩色、数据点标记等来修饰图像,也可以设计出图形用户 界面,方便地进行人机交互。
(1)由于 MATLAB 函数众多,而且课本上提供的都是最基本的函数功能, 自己不仅要去图书馆借这方面的专业书籍来阅读。而且许多函数的编写都要用到 C 语言,对 C 语言也有一定得要求。例如边缘检测函数的实现,在建立了 BUTTON GROUP 之 后 , 添 加 RADIO BUTTON 按 钮 , 然 后 右 键 调 用 SelectionChangeFcn,弹出 M 文件,在相应的地方编写。global y
(2)由于不同版本的 MATLAB 可能不兼容,特别是高版本的在低版本的 MATLAB 中几乎打不开,而只是一堆乱码。所以我想能不能把 figure 文件转换 成可执行文件 exe。在查阅了相关资料后发现可以转换。在打开可执行文件时虽 然不比安装 MATLAB,但是需要安装相应的补丁来支持底层文件才能执行。
(3)通过本次课程设计,使自己对 MATLAB GUI 设计流程有了比较深刻 的体会,同时也了解了一般软件设计的过程。在设计过程中碰到了很多的问题, 通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。
14

数字图像处理课程设计
参考文献
[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
15