DSP原理及图像处理应用第8章 彩色图像转化成灰度图像1
- 格式:ppt
- 大小:2.18 MB
- 文档页数:8
实验17、利用DSP 实现图像的灰度处理一、 实验目的1. 了解图像灰度处理基本原理和方法。
2. 熟悉视频采集与显示的运行过程。
3. 掌握图像数据在内存中的存储方式,掌握内存地址与屏幕坐标的对应关系。
4. 掌握利用DM642实现图像的灰度处理的方法。
二、 实验内容在实验16的基础上,自行设计图像灰度处理的算法程序,加入到视频显示程序中。
要求实现灰度显示的区域为一个带黑框的矩形部分,该矩形在显示器屏幕中的位置为:X 坐标范围(190~530),Y 坐标范围(118~458);黑色边框为6个像素宽度。
如图1所示。
图1 视频显示示意图 三、实验原理1.灰度处理算法灰度图(Gray-scale Image )是指将图像按照灰度等级的数目来划分后形成的图像。
灰度模式最多使用256级灰度来表现图像,图像中的每一个像素有一个0~255之间的亮度值,0表示黑色,255表示白色。
在RGB 色彩空间中,当R 、G 、B 各分量相等时,即呈现为灰度图。
对YUV 编码的图像来说,转换为RGB 的表达式如下:R=Y+1.370705*(V-0.5)G=Y-0.698001*(V-0.5)-0.337633*(U-0.5)灰度显示区域 X Y184 184 112 112(719,575)彩色显示区域 6B=Y+1.732446*(U-0.5)从上式可以很容易得到,当V=U=0.5时,R=G=B。
由于本实验中Y、U、V采用8位无符号数格式,所以0.5转换为8位无符号数格式即为128(0x80)。
因此,对YUV图像来说,将Cb、Cr分量设置为0x80,Y分量保留,即能实现灰度图。
2.数据在内存中的存放为了保证DSP的数据处理速度,我们应在内存中开辟三个数据缓冲区:采集缓冲区、数据处理缓冲区、显示缓冲区。
我们在主程序中已经定义了这三个数据缓冲区,每个缓冲区的大小均为一帧图像的大小(720*576,每帧576行,每行720个像素)。
彩色灰度转换原理彩色灰度转换是一种将彩色图像转换为灰度图像的技术。
在计算机图像处理中,彩色图像由红、绿、蓝三个颜色通道组成,每个通道的像素值表示对应颜色的强度。
而灰度图像只有一个通道,每个像素值表示灰度的强度,即黑白图像。
彩色灰度转换的原理是通过将彩色图像的三个颜色通道的像素值加权求和,得到对应像素的灰度值。
常用的加权求和方法是将红、绿、蓝三个颜色通道的像素值按照一定的权重相加,得到灰度图像的像素值。
一种常用的加权求和方法是将红、绿、蓝三个颜色通道的像素值按照不同的权重相加,得到灰度图像的像素值。
常用的加权方法是将红色通道的权重设为0.299、绿色通道的权重设为0.587、蓝色通道的权重设为0.114。
这是因为人眼对不同颜色的敏感度是不同的,对绿色最敏感,对红色次之,对蓝色最不敏感。
通过按照不同的权重相加,可以更好地反映人眼对图像的感知。
彩色灰度转换的过程可以通过以下步骤进行:1. 加载彩色图像:首先,需要将彩色图像加载到计算机内存中。
彩色图像可以是常见的图像格式,如JPEG、PNG等。
2. 分离颜色通道:将彩色图像的红、绿、蓝三个颜色通道分离出来,得到三个单独的通道图像。
3. 加权求和:对于每个通道图像的对应像素,按照设定的权重进行加权求和,得到灰度图像的对应像素值。
4. 合并通道:将灰度图像的三个通道合并为一个通道,得到最终的灰度图像。
通过彩色灰度转换,可以将彩色图像转换为灰度图像,简化了图像处理的复杂度。
灰度图像具有更低的存储需求和计算复杂度,使得图像处理算法更加高效。
此外,灰度图像在一些特定应用中也具有重要的作用,如图像识别、图像压缩等。
总结起来,彩色灰度转换是通过将彩色图像的颜色通道加权求和,得到灰度图像的过程。
通过合理选择权重,可以更好地反映人眼对图像的感知。
彩色灰度转换简化了图像处理的复杂度,并在一些应用中发挥重要作用。
[数字图像处理](⼀)彩⾊图像转灰度图像的三种⽅式与效果分析图像处理(⼀)彩⾊图⽚转灰度图⽚三种实现⽅式最⼤值法imMax=max(im(i,j,1),im(i,j,2),im(i,j,3))平均法imEva=im(i,j,1)3+im(i,j,2)3+im(i,j,3)3加权平均值法imKeyEva=0.2989×im(i,j,1)+0.5870×im(i,j,2)+0.1140×im(i,j,3)matlba实现clc;close all;clear all;% 相对路径读⼊图⽚(和代码在同⼀⽂件夹下)im = imread('p2.jpg');%---查看图⽚,检测是否成功读⼊% 对显⽰的图⽚进⾏排版subplot(2,3,4);imshow(im);% 对图⽚进⾏命名title('原图');[col,row,color] = size(im);%col为图⽚的⾏数,row为图⽚的列数,color对于彩⾊图⽚⼀般为3,每层对应RGB %利⽤matlab⾃带的函数进⾏ rgb_to_gray;im_matlab = rgb2gray(im);subplot(2,3,1);imshow(im_matlab);title('matlab⾃带rgb2gray');%--------------------------------------------------------%---⽤最⼤值法% 创建⼀个全为1的矩阵,长宽等同于原图的im_max = ones(col,row);for i = 1:1:colfor j = 1:1:rowim_max(i,j) = max( im(i,j,:) );endend% 将矩阵变为8byte⽆符号整型变量(不然⽆法显⽰图⽚)% 最好在计算操作结束后再变化,不然会有精度问题!!im_max = uint8(im_max);subplot(2,3,2);imshow(im_max);title('最⼤值法');%--------------------------------------------------------% 平均值法im_eva = ones(col,row);for i = 1:1:colfor j = 1:1:rowim_eva(i,j) = im(i,j,1)/3 + im(i,j,2)/3 + im(i,j,3)/3 ;% 两种的结果其实⼀样,但是如果先转换为uint8就会出现精度问题%sum1 = im(i,j,1)/3 + im(i,j,2)/3 + im(i,j,3)/3%sum2 = ( im(i,j,1) + im(i,j,2)+ im(i,j,3) )/3;%fprintf( " %.4f %.4f \n",sum1 ,sum2 ) ;endendim_eva = uint8(im_max);subplot(2,3,3);imshow(im_eva);title('平均值法');%--------------------------------------------------------% 加权平均法(rgb2gray所使⽤的权值)im_keyeva = ones(col,row);% 加权算法先转换为uint8计算效果更好im_keyeva = uint8(im_max);for i = 1:1:colfor j = 1:1:rowim_keyeva(i,j) = 0.2989*im(i,j,1) + 0.5870*im(i,j,2) + 0.1140*im(i,j,3) ;endendsubplot(2,3,5);imshow(im_keyeva);title('加权平均法');Processing math: 100%附matlab——rgb2gray源码function I = rgb2gray(X)%RGB2GRAY Convert RGB image or colormap to grayscale.% RGB2GRAY converts RGB images to grayscale by eliminating the% hue and saturation information while retaining the% luminance.%% I = RGB2GRAY(RGB) converts the truecolor image RGB to the% grayscale intensity image I.%% NEWMAP = RGB2GRAY(MAP) returns a grayscale colormap% equivalent to MAP.%% Class Support% -------------% If the input is an RGB image, it can be of any numeric type. The output% image I has the same class as the input image. If the input is a% colormap, the input and output colormaps are both of class double.%% Notes% -----% RGB2GRAY converts RGB values to grayscale values by forming a weighted % sum of the R, G, and B components:%% 0.2989 * R + 0.5870 * G + 0.1140 * B%% The coefficients used to calculate grayscale values in RGB2GRAY are% identical to those used to calculate luminance (E'y) in% Rec.ITU-R BT.601-7 after rounding to 3 decimal places.%% Rec.ITU-R BT.601-7 calculates E'y using the following formula:%% 0.299 * R + 0.587 * G + 0.114 * B%% Example% -------% I = imread('example.tif');%% J = rgb2gray(I);% figure, imshow(I), figure, imshow(J);%% indImage = load('clown');% gmap = rgb2gray(indImage.map);% figure, imshow(indImage.X,indImage.map), figure, imshow(indImage.X,gmap);%% See also RGB2IND, RGB2LIGHTNESS.% Copyright 1992-2020 The MathWorks, Inc.narginchk(1,1);isRGB = parse_inputs(X);if isRGBI = matlab.images.internal.rgb2gray(X);else% Color map% Calculate transformation matrixT = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);coef = T(1,:);I = X * coef';I = min(max(I,0),1);I = repmat(I, [1 3]);end%--------------------------------------------------------------------------function is3D = parse_inputs(X)is3D = (ndims(X) == 3);if is3D% RGBif (size(X,3) ~= 3)error(message('MATLAB:images:rgb2gray:invalidInputSizeRGB'))end% RGB can be single, double, int8, uint8,% int16, uint16, int32, uint32, int64 or uint64validateattributes(X, {'numeric'}, {}, mfilename, 'RGB');elseif ismatrix(X)% MAPif (size(X,2) ~= 3 || size(X,1) < 1)error(message('MATLAB:images:rgb2gray:invalidSizeForColormap'))end% MAP must be doubleif ~isa(X,'double')error(message('MATLAB:images:rgb2gray:notAValidColormap'))endelseerror(message('MATLAB:images:rgb2gray:invalidInputSize'))end总结通过上⾯的代码结合实际的测试,果然,matlab⾃带的rgb2gray也就是加权平均的⽅法,对光线明暗的处理是最好的。
摘要图像处理是一门很有价值的学科,在科学技术不断发展的今天它的技术已趋于成熟。
同时图像之间的处理, 在实际应用中也显的越来越重要。
本课程设计的主要任务是完成数字图像处理中关于彩色图像灰度化的仿真,观察仿真结果,并进行结果分析。
本课程设计的系统开发平台为MATLAB,程序运行平台为Windows98/2000/XP。
本次课程设计通过加权平均法、平均值法和最大值法这三种方法,实现了彩色图像的灰度化处理,并对它们进行了对比分析。
最后,完成了彩色图像灰度化的仿真。
关键词: MATLAB7.0;彩色图像;灰度化目录1设计目的 (1)2设计方案 (1)3相关知识 (2)4 详细设计 (3)5 源代码及分析 (4)6 功能仿真图及分析 (6)7结束语 (11)8参考文献 (12)附录彩页图像 (13)1设计目的1、通过MATLAB仿真软件,实现彩色图像的灰度化处理;2、学习并熟悉MATLAB编程环境的一般操作和运用;3、在加深对数字图像处理课本知识理解的基础上,学会运用已学的知识设计彩色图像灰度化的处理方法并对结果进行分析。
2设计方案将彩色图像转化成为灰度图像的过程称为图像的灰度化处理。
彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255个中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。
而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其中一个像素点的变化范围为255种,所以在数字图像处理中一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。
灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。
在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫做灰度值。
因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。
图像的灰度化处理,一般有以下三种设计方案:1、加权平均法根据重要性及其它指标,将三个分量以不同的权值进行加权平均。
彩⾊图像与灰度图像之间的转换⼀.彩⾊图像简介在RGB⾊彩空间,图像深度与⾊彩的映射关系主要有真彩⾊、伪彩⾊和调配⾊。
真彩⾊是指在组成⼀幅彩⾊图像的每个像素值中,有R,G,B三个基⾊分量,每个基⾊分量直接决定显⽰设备的基⾊强度,这样产⽣的彩⾊称为真彩⾊,是真实的原图彩⾊。
伪彩⾊图像的每个像素值实际上是⼀个索引值或代码,该代码值作为⾊彩查找表CLUT中某⼀项的⼊⼝地址,根据该地址可查找出包含实际R,G,B的强度值。
这种⽤查找映射的⽅法产⽣的⾊彩称为伪彩⾊。
⾊彩查找表CLUT是⼀个事先做好的表,表项⼊⼝地址也称为索引号。
彩⾊图像本⾝的像素数值和⾊彩查找表的索引号有⼀种变换关系,这种关系可以是系统定义的,也可以是⽤户⾃⼰定义的变换关系。
使⽤查找得到的数值显⽰的彩⾊是真的,可⼜不是图像本⾝的颜⾊,因为其没有完全反映原图的彩⾊,所以称其为伪彩⾊。
调配⾊的获取是通过每个像素点的R,G,B分量分别作为单独的索引值进⾏变换,经相应的⾊彩查找表找出各⾃的基⾊强度,⽤变换后的R,G,B强度值产⽣⾊彩。
⼆.灰度图像简介灰度是描述灰度图像内容的最直接的视觉特征。
它指⿊⽩图像中点的颜⾊深度,范围⼀般从0到255,⽩⾊为255,⿊⾊为0,故⿊⽩图像也称灰度图像。
灰度图像矩阵元素的取值通常为[0,255],因此其数据类型⼀般为8位⽆符号整数,这就是⼈们通常所说的256级灰度。
三.彩⾊图像转化为灰度图像彩⾊图像转换为灰度图像时,需要计算图像中每个像素有效的亮度值,其计算公式为:Y = 0.3R + 0.59G + 0.11B代码如下:clear all;close all;I = imread('lenna.png');[M N H] = size(I);I2 = zeros(M, N);for x = 1 : Mfor y = 1 : NA = double([I(x, y, 1) I(x, y, 2) I(x, y, 3)]);B = [0.3; 0.59; 0.11];[gray] = A * B; % 计算灰度值I2(x, y) = gray;endendimshow(uint8(I2));四.灰度图像转换为彩⾊图像将灰度图像转换为彩⾊图像,称为灰度图像的伪彩⾊处理。
目录摘要 (1)第一章绪论 (3)1.1论文研究背景与意义 (3)1.2国内外的研究现状 (3)1.3本文结构 (4)第二章图像灰度化的原理及MATLB仿真 (5)2.1引言 (5)2.2图像灰度化处理的基本原理与方法 (5)2.2.1RGB彩色图像转化灰度图像的原理与方法 (5)2.3基于MATLAB的仿真 (8)2.3.1MATLAB的简介 (8)2.3.2仿真结果及其分析 (8)第三章基于DSP的图像处理实现 (12)3.1引言 (12)3.2DSP系统平台与开发环境CCS简介 (12)3.3图像基于DSP的实现及结果分析 (13)3.4图像基于不同平台的比较分析 (16)第四章结论 (16)参考文献 (18)附录 (19)致谢 (23)摘要彩色图像的灰度化是图像处理的一个基本方法,在图像检测与识别、图像分析与处理等领域有着广泛的应用,把采集来的彩色图像进行灰度化处理,这样既可以提高后续算法速度,而且可以提高系统综合应用实效,达到更为理想的要求。
DSP强大的信号处理能力为实时图像信息处理提供了应用基础。
随着信息技术的高速发展,DSP在图形图像领域方面的应用越加广泛,如图形变换、图像压缩、图像传输、图像增强、图像识别等。
本文正是在研究基于DSP进行图像灰度化处理的过程中,首先基于不同颜色模型,即RGB与YUV模型分别进行图像分析,然后对图像灰度化处理的原理与方法进行了研究(本文重点研究的是图像的线性灰度变换),由于RGB与YUV模型在灰度化处理中原理相同,所以本文重点对RGB模型进行软件仿真。
在MATLAB软件环境中实现了对RGB彩色模型的仿真的基础上,又在DSP处理平台上完成程序设计,给出实验结果,并与MATLAB仿真结果相比较进行分析。
本文通过分量法、加权平均法、平均值法和最大值法这四种方法,依次对实现了彩色图像的灰度化处理,并对它们进行了对比分析。
最后,完成了彩色图像灰度化的仿真,由于MATLAB仿真结果与CCS处理结果十分接近,从而实现了此次研究的目的。
方法一:对于彩色转灰度,有一个很著名的心理学公式:Gray = R*0.299 + G*0.587 + B*0.114方法二:而实际应用时,希望避免低速的浮点运算,所以需要整数算法。
注意到系数都是3位精度的没有,我们可以将它们缩放1000倍来实现整数运算算法:Gray = (R*299 + G*587 + B*114 + 500) / 1000RGB一般是8位精度,现在缩放1000倍,所以上面的运算是32位整型的运算。
注意后面那个除法是整数除法,所以需要加上500来实现四舍五入。
就是由于该算法需要32位运算,所以该公式的另一个变种很流行:Gray = (R*30 + G*59 + B*11 + 50) / 100方法三:上面的整数算法已经很快了,但是有一点仍制约速度,就是最后的那个除法。
移位比除法快多了,所以可以将系数缩放成2的整数幂。
习惯上使用16位精度,2的16次幂是65536,所以这样计算系数:0.299 * 65536 = 19595.264 ≈ 195950.587 * 65536 + (0.264) = 38469.632 + 0.264 = 38469.896 ≈ 384690.114 * 65536 + (0.896) = 7471.104 + 0.896 = 7472可能很多人看见了,我所使用的舍入方式不是四舍五入。
四舍五入会有较大的误差,应该将以前的计算结果的误差一起计算进去,舍入方式是去尾法:写成表达式是:Gray = (R*19595 + G*38469 + B*7472) >> 162至20位精度的系数:Gray = (R*1 + G*2 + B*1) >> 2Gray = (R*2 + G*5 + B*1) >> 3Gray = (R*4 + G*10 + B*2) >> 4Gray = (R*9 + G*19 + B*4) >> 5Gray = (R*19 + G*37 + B*8) >> 6Gray = (R*38 + G*75 + B*15) >> 7Gray = (R*76 + G*150 + B*30) >> 8Gray = (R*153 + G*300 + B*59) >> 9Gray = (R*306 + G*601 + B*117) >> 10Gray = (R*612 + G*1202 + B*234) >> 11Gray = (R*1224 + G*2405 + B*467) >> 12Gray = (R*2449 + G*4809 + B*934) >> 13Gray = (R*4898 + G*9618 + B*1868) >> 14Gray = (R*9797 + G*19235 + B*3736) >> 15Gray = (R*19595 + G*38469 + B*7472) >> 16Gray = (R*39190 + G*76939 + B*14943) >> 17Gray = (R*78381 + G*153878 + B*29885) >> 18Gray = (R*156762 + G*307757 + B*59769) >> 19Gray = (R*313524 + G*615514 + B*119538) >> 20仔细观察上面的表格,这些精度实际上是一样的:3与4、7与8、10与11、13与14、19与20所以16位运算下最好的计算公式是使用7位精度,比先前那个系数缩放100倍的精度高,而且速度快:Gray = (R*38 + G*75 + B*15) >> 7其实最有意思的还是那个2位精度的,完全可以移位优化:Gray = (R + (WORD)G<<1 + B) >> 2将一幅图像转换为灰度图灰度图是指用灰度表示的图像,灰度是在白色和黑色之间分的若干个等级,其中最常用的是256级,也就是256级灰度图。
灰度化原理灰度化是数字图像处理中的一个重要步骤,它将彩色或者黑白图像转换为灰度图像,方便进行后续分析和处理。
灰度化操作将图像中每个像素的RGB值转换为一个灰度值,使得每个像素只有一个数值,从而简化了图像的复杂度。
灰度化原理主要可以分为两种方法:亮度平均法和加权平均法。
亮度平均法是指将图像中每个像素的RGB值的平均值作为该像素的灰度值。
对于彩色图像,每个像素有R、G、B三个分量,而灰度图像只需要一个灰度值,因此需要将这三个分量合并成一个亮度值。
具体的计算公式是:灰度值 = (R + G + B) / 3这种方法的优点是简单易懂,计算速度快;但缺点是没有考虑到每个颜色通道的重要性,可能会对图像的质量造成影响。
1. 亮度加权平均法该方法根据每个颜色通道所表达的亮度值来计算灰度值。
由于人眼对于绿色通道的亮度最为敏感,因此绿色通道的权重最高,而红色和蓝色通道的权重相对较低。
具体的计算公式是:灰度值 = 0.299R + 0.587G + 0.114B2. 最大值法该方法将每个颜色通道中的最大值作为该像素的灰度值。
由于对比度较强,能够突出图像中的主要内容,因此常用于图像边缘检测中。
具体的计算公式是:3. 平均值法该方法将每个颜色通道的值平均后作为该像素的灰度值。
由于不考虑每个通道的权重,所以计算简单,但会对图像的质量造成一定影响。
具体的计算公式是:灰度化原理是将彩色或者黑白图像转换为灰度图像,该操作主要分为亮度平均法和加权平均法两种方法。
加权平均法根据颜色通道的重要性来计算灰度值,可以提高图像的质量。
根据实际需求选择合适的灰度化方法,可以有效提高图像处理的效率和精度。
除了上文提到的灰度化计算方法之外,还有一些其他的方法,例如分色灰度法、伽马变换灰度化、局部灰度化等。
分色灰度法是指将图像的每个颜色通道分别进行灰度化,然后取这些灰度值的平均值作为该像素的灰度值。
该方法可以保留原图像中不同颜色通道的信息,能够更好地呈现图像的色彩和纹理。