彩色图像转灰度图像

合集下载

qt中gray函数的定义

qt中gray函数的定义

qt中gray函数的定义Qt中的gray函数是一种图像处理函数,用于将彩色图像转换为灰度图像。

本文将对gray函数进行详细介绍和说明。

一、gray函数的基本概述1. gray函数是Qt中的一个图像处理函数,其作用是将彩色图像转换为灰度图像。

灰度图像是一种只包含灰度值的图像,其颜色深浅表示亮度,而不包含颜色信息。

2. gray函数在Qt中以灰度色阶的方式归一化图像像素,简化了图像处理的复杂度。

3. gray函数通常应用于图像处理、计算机视觉和机器学习等领域,可用于特征提取、图像增强和模式识别等任务。

二、gray函数的使用方法1. gray函数的使用方法非常简单。

需要导入Qt的图像处理模块(如QImage或OpenCV)。

然后,将待处理的彩色图像传入gray函数即可。

函数将返回一个灰度图像。

2. 在Qt中,gray函数通常是作为一个图像处理类的成员函数或静态函数,可直接调用。

例如,可以通过QImage类的convertToGray函数将彩色图像转换为灰度图像。

3. 函数参数可以根据实际需要进行调整,如选择不同的色彩空间转换方法、调整灰度级别和应用不同的图像增强算法等。

三、gray函数的实现原理1. gray函数的实现原理基于彩色图像的色彩空间转换。

通常,彩色图像使用RGB(红绿蓝)色彩模型表示,而灰度图像使用灰度色阶(灰度级别)表示。

2. 在色彩空间转换过程中,gray函数将RGB三个分量按照一定的权重相加,得到一个灰度值。

这个灰度值代表了该像素点的亮度信息。

3. 常用的灰度值计算公式有多种,如平均值法、最大值法和Luma方法等。

其中,Luma方法根据人眼的视觉特性,将红、绿、蓝分量的权重进行调整,得到更能反映图像亮度的灰度值。

四、gray函数的应用领域1. 图像处理:gray函数常用于图像处理任务,如边缘检测、图像分割和图像增强等。

通过将彩色图像转换为灰度图像,可以方便地进行后续处理。

2. 计算机视觉:在计算机视觉领域,灰度图像广泛应用于人脸识别、目标检测和图像匹配等任务。

[笔记]图像的二值化,灰度化,滤波,反色的基本原理

[笔记]图像的二值化,灰度化,滤波,反色的基本原理

图像的二值化,灰度化,滤波,反色的基本原理一、图像的灰度化处理的基本原理将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。

彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。

而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。

灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。

图像的灰度化处理可用两种方法来实现。

第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。

第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。

二图像的二值化的基本原理图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。

即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。

在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。

为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。

所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。

PythonPIL彩色图像转灰度图像

PythonPIL彩色图像转灰度图像

PythonPIL彩⾊图像转灰度图像1. PIL彩⾊图像转灰度图像 PIL彩⾊图像转灰度图像只需要调⽤函数 transforms.Grayscale(1) 即可。

需要注意的是PIL打开的图像是RGB格式的,⼀般是三通道,转为灰度图像后,变为⼀通道。

转换原理,采⽤的 ITU-R 601-2 luma 原理来转换的,L = R * 299/1000 + G * 587/1000 + B * 114/1000,下取整,⼩数被省略,跟OpenCV有区别,OpenCV保留⼩数位。

⼩⽣就不多⾔了,客官请下观~~。

2. 例⼦2.1 Code1import numpy as np2import torchvision.transforms as transforms3from PIL import Image456def image_RGB2Gray():7# 图⽚路径,相对路径8 image_path = "./fusion_datasets/1.jpg"9# 读取图⽚10 image = Image.open(image_path)11# 输出维度12print("RGB图像的维度:", np.array(image).shape)13# 显⽰原图14 image.show()15# RGB转换我灰度图像16 image_transforms = pose([17 transforms.Grayscale(1)18 ])19 image = image_transforms(image)20# 输出灰度图像的维度21print("灰度图像维度: ", np.array(image).shape)22# 显⽰灰度图像23 image.show()242526if__name__ == '__main__':27 image_RGB2Gray()2.2 结果显⽰ 转换前后的维度变换,开始是3通道的(height, width, channel),转为灰度图像后维度为1通道,1被省略显⽰。

灰度检测算法

灰度检测算法

灰度检测算法
灰度检测算法,简称灰度算法,是一种常用的图像处理算法,用于将彩色图像转换成灰度图像。

灰度图像只包含灰度值而不包含彩色信息,通常用于图像分析、图像处理、目标检测等领域。

下面是一个简单的灰度检测算法示例:
1. 读取彩色图像。

2. 将彩色图像转换成灰度图像。

可以使用以下公式将彩色像素点的RGB值转换成灰度值:
灰度值 = 0.299 * 红色通道值 + 0.587 * 绿色通道值 + 0.114 * 蓝色通道值
红色通道值、绿色通道值和蓝色通道值的取值范围为0-255。

3. 对每个灰度图像像素点进行灰度阈值检测。

如果灰度值小于某个设定的阈值,则该像素点被认为是黑色;如果灰度值大于等于阈值,则该像素点被认为是白色。

4. 输出处理后的灰度图像。

这是一个简单的灰度检测算法示例,可以根据具体需求进行优化和改进。

在实际应用中,还可以添加其他步骤,如图像预处理、边缘检测等,以提高算法的准确性和效果。

需要注意的是,本算法仅为示例,实际使用时,应根据具体情况进行改进和优化,并进行合理的测试和验证。

灰度化平均值法

灰度化平均值法

灰度化平均值法:让你的图片更有质感
灰度化平均值法是一种简单易懂的图像处理方法,可以将彩色图片转换成灰度图片。

本文将为大家介绍这种方法的原理、应用以及如何实现。

一、什么是灰度化平均值法?
灰度是指将彩色图像中的颜色信息转换为灰度级别信息的处理方法。

在图像处理中,常常需要将彩色图像转换成灰度图像,这种转换可以减少图像数据中的冗余信息,使得图像处理更简单、高效。

灰度化平均值法是一种基础的图像处理算法,其原理是将彩色像素的RGB值取平均值,然后将取得的平均值灰度化。

二、灰度化平均值法的应用
灰度化平均值法广泛应用于图像识别、图像处理、计算机视觉、图像压缩等领域。

它常被用来对图像进行预处理,为后续的图像分析提供更好的基础。

三、如何实现灰度化平均值法?
实现灰度化平均值法的过程非常简单,只需要按照以下步骤进行即可:
1. 打开要处理的图片,读取像素信息;
2. 遍历图片中的所有像素,并将每个像素的RGB值求平均;
3. 将平均值灰度化,再将其写入新的图片文件中。

四、总结
灰度化平均值法是一种简单易懂的图像处理方法,可用于将彩色
图片转换成灰度图片,广泛应用于图像识别、计算机视觉等领域。


握这种方法的原理及应用,可以帮助我们更好地进行图像处理和分析。

[数字图像处理](一)彩色图像转灰度图像的三种方式与效果分析

[数字图像处理](一)彩色图像转灰度图像的三种方式与效果分析

[数字图像处理](⼀)彩⾊图像转灰度图像的三种⽅式与效果分析图像处理(⼀)彩⾊图⽚转灰度图⽚三种实现⽅式最⼤值法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也就是加权平均的⽅法,对光线明暗的处理是最好的。

灰度图像处理技术在医学图像识别中的应用

灰度图像处理技术在医学图像识别中的应用

灰度图像处理技术在医学图像识别中的应用近年来,随着技术的不断进步和医学影像学的不断发展,医学图像识别技术已经成为了医学领域中的重要研究方向之一。

而其中一个重要的技术支撑就是灰度图像处理技术。

灰度图像处理技术是将图像从彩色图像转换为黑白灰度图像的过程。

这个过程可以使我们更加有效地处理和分析出与我们所关注的部位有关的信息。

在医学领域中,灰度图像处理技术的应用具有极为重要的意义。

医生可以通过医学影像手段获取一个人身体内部的结构信息。

但是,对于不同的人、不同的部位,在同一时刻所获得的图像,有很多的差异性,可能会影响医生的诊断和治疗结果。

而灰度图像处理技术,可以将这些影像信息转化为灰度图像,使得医生能够通过图像中的明暗灰度快速识别出关键的信息,从而在诊断和治疗中更加精准。

同时,灰度图像处理技术还可以用来优化医学影像质量。

在影像采集过程中,常常会出现一些噪点、伪影和模糊等问题。

而灰度图像处理技术能够通过各种算法实现这些问题的自动消除。

比如,在利用CT影像进行检查时,灰度图像处理技术能够去除CT图像中的伪影,使CT图像呈现更加清晰的咳嗽病灶,从而更加准确地诊断肺炎。

此外,灰度图像处理技术还可以作为医学影像处理中的预处理环节使用。

在进行医学影像处理时,往往需要进行一系列的处理、筛选和分析过程。

而灰度图像处理技术能够将预处理步骤中的数据处理得更加精确,使得后续的分析和处理更具有针对性和有效性。

总之,灰度图像处理技术在医学图像识别领域中的应用,对于精准诊断和科学治疗都有着非常重要的作用。

未来,随着这项技术的不断发展和完善,相信它会在医学影像处理中发挥更加重要的作用,对人类的健康事业做出更加重要的贡献。

基于MATLAB的彩色图像灰度化处理

基于MATLAB的彩色图像灰度化处理

目录第1章绪论............................................................................................................................ - 0 - 第2章设计原理.................................................................................................................... - 1 - 第3章彩色图像的灰度化处理............................................................................................ - 2 - 3.1加权平均法 .. (2)3.2平均值法 (2)3.3最大值法 (3)3.4举例对比 (4)3.5结果分析 (5)第4章结论.......................................................................................................................... - 7 - 参考文献.................................................................................................................................... - 7 - 附录............................................................................................................................................ - 8 -基于Matlab的彩色图像灰度化处理第1章绪论在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。

将一幅图像转换为灰度图

将一幅图像转换为灰度图

方法一:对于彩色转灰度,有一个很著名的心理学公式: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级灰度图。

图像的二值化,灰度化,滤波,反色的基本原理

图像的二值化,灰度化,滤波,反色的基本原理

第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。
第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。
二 图像的二值化的基本原理
图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。
一组数X1、X2、X3…Xn 假如其排序如下:
X i 1≤X i 2≤X i 3≤…≤X i n

计算机等级考试中的图形图像处理方法总结

计算机等级考试中的图形图像处理方法总结

计算机等级考试中的图形图像处理方法总结图形图像处理是计算机科学领域内的一项重要技术,它涉及到对数字图像进行编辑、变换、增强、变形等各种操作,以达到更好的图像质量或满足特定需求。

在计算机等级考试中,对图形图像处理方法的掌握是必不可少的。

本文将对计算机等级考试中常见的图形图像处理方法进行总结,为考生提供参考。

一、图形图像处理方法1. 像素级处理:像素级处理是针对图像的每个像素点进行操作的方法。

常见的像素级处理包括图像灰度化、二值化、直方图均衡化等。

图像灰度化是将彩色图像转换为灰度图像的过程,可以通过简单的将红、绿、蓝三个通道的像素值进行加权平均来实现。

二值化是将灰度图像转换为黑白图像的过程,可以通过设置阈值,将低于阈值的像素点设为黑色,高于阈值的像素点设为白色来实现。

直方图均衡化是调整图像亮度分布的方法,通过对图像的灰度直方图进行变换,增强图像的对比度。

2. 几何变换:几何变换是对图像进行平移、旋转、缩放等操作的方法。

常见的几何变换包括图像平移、图像旋转、图像缩放等。

图像平移是将图像在水平和垂直方向上进行移动,可以通过调整像素的位置来实现。

图像旋转是将图像按照某个角度进行旋转,可以通过坐标变换和插值算法来实现。

图像缩放是调整图像的尺寸,可以通过插值算法来实现,常见的插值算法有最近邻插值、双线性插值等。

3. 滤波处理:滤波处理是对图像进行模糊、锐化等操作的方法。

常见的滤波处理包括线性滤波和非线性滤波。

线性滤波是将图像的每个像素点与周围像素点进行加权和计算得到新的像素值,常见的线性滤波包括均值滤波、高斯滤波等。

非线性滤波是根据像素点的邻域信息进行处理的方法,常见的非线性滤波包括中值滤波、双边滤波等。

4. 分割与识别:分割与识别是将图像分成若干个区域并进行识别的方法,常见的分割方法包括阈值分割、区域生长等。

阈值分割是根据像素的灰度值将图像分成两个或多个区域的方法,可以通过设定阈值,将灰度值低于阈值的像素设为一个区域,高于阈值的像素设为另一个区域。

灰度化原理

灰度化原理

灰度化原理灰度化是数字图像处理中的一个重要步骤,它将彩色或者黑白图像转换为灰度图像,方便进行后续分析和处理。

灰度化操作将图像中每个像素的RGB值转换为一个灰度值,使得每个像素只有一个数值,从而简化了图像的复杂度。

灰度化原理主要可以分为两种方法:亮度平均法和加权平均法。

亮度平均法是指将图像中每个像素的RGB值的平均值作为该像素的灰度值。

对于彩色图像,每个像素有R、G、B三个分量,而灰度图像只需要一个灰度值,因此需要将这三个分量合并成一个亮度值。

具体的计算公式是:灰度值 = (R + G + B) / 3这种方法的优点是简单易懂,计算速度快;但缺点是没有考虑到每个颜色通道的重要性,可能会对图像的质量造成影响。

1. 亮度加权平均法该方法根据每个颜色通道所表达的亮度值来计算灰度值。

由于人眼对于绿色通道的亮度最为敏感,因此绿色通道的权重最高,而红色和蓝色通道的权重相对较低。

具体的计算公式是:灰度值 = 0.299R + 0.587G + 0.114B2. 最大值法该方法将每个颜色通道中的最大值作为该像素的灰度值。

由于对比度较强,能够突出图像中的主要内容,因此常用于图像边缘检测中。

具体的计算公式是:3. 平均值法该方法将每个颜色通道的值平均后作为该像素的灰度值。

由于不考虑每个通道的权重,所以计算简单,但会对图像的质量造成一定影响。

具体的计算公式是:灰度化原理是将彩色或者黑白图像转换为灰度图像,该操作主要分为亮度平均法和加权平均法两种方法。

加权平均法根据颜色通道的重要性来计算灰度值,可以提高图像的质量。

根据实际需求选择合适的灰度化方法,可以有效提高图像处理的效率和精度。

除了上文提到的灰度化计算方法之外,还有一些其他的方法,例如分色灰度法、伽马变换灰度化、局部灰度化等。

分色灰度法是指将图像的每个颜色通道分别进行灰度化,然后取这些灰度值的平均值作为该像素的灰度值。

该方法可以保留原图像中不同颜色通道的信息,能够更好地呈现图像的色彩和纹理。

数字图像处理2-真彩色,灰度图像,索引色图像等的相互转化

数字图像处理2-真彩色,灰度图像,索引色图像等的相互转化

timg 真彩色timg1 灰度图像timg2 索引色图像(64色)timg3 二值图像(阈值为0.5)这里从网上找到了timg真彩色图像作为本次作业中进行数字处理的图像。

首先在ps中调整了图像模式,并进行了另存为,生成了timg1与timg2,又在MATLAB中将灰度图像转化为了二值图像timg3,其中阈值为0.5。

这一步操作的代码如下:A = imread('timg1.jpg');B = im2bw(A, 0.5);imshow(B)imwrite(B,'timg3.jpg');随后我们来对每个图像imread的返回值进行观察。

对于timg处理的程序如下:A = imread('timg.jpg');disp(A);whos Aimshow(A)由于disp显示数据过多,这里不放原始数据了。

其具体内容为3个数组,每个数组都是320*200的,分别代表图片中每个像素的rgb值。

而whos语句显示出的内容如下:Bytes Class Name Size192000 uint8A 200x320x3其中200*320*3说明图像像素为200*320而且为rgb格式,有3个矩阵。

192000为图片大小,而其rgb值是用unit8即8位无符号整数存储,0-255的值代表了某一点像素某一颜色分量的强度。

同理,若将上述程序中的timg改为timg1灰度图像,显示出来的矩阵则只有一个,大小仍为200*320但是每个点的数值则代表对应像素的灰度值。

whos语句显示出的内容如下:Name SizeBytes Class64000 u int8A 200x320由于灰度图像只需要存储灰度而不是rgb3个分量,其大小便没有最后的*3,因此其大小也只为timg的1/3。

对于索引图进行的操作与其他图像不同,由于其本身存储的是索引值,需要导入索引表才能还原原本的图像,因此程序如下:[IM, map] = imread('timg2.png','png');disp(IM);IMrgb(:,:,:) = ind2rgb(IM,map);whos IMrgbimshow(IMrgb)这里如果直接imshow原本图像的话会根据灰度图像的方式显示错误的图像,因此采用了一个ind2rgb函数通过之前导入的索引表和索引值矩阵将图像恢复为rgb图像矩阵。

火焰识别算法讲解

火焰识别算法讲解

火焰识别算法讲解1.基于灰度图像的火焰识别算法该算法主要是基于灰度图像的火焰特征进行识别。

首先,将彩色图像转化为灰度图像,然后通过图像阈值处理,将图像分为火焰和背景两部分。

接着,通过图像形态学操作,如膨胀和腐蚀,对火焰进行去噪处理。

最后,通过计算火焰的面积、灰度直方图、纹理特征等指标来判断是否为火焰。

2.基于颜色特征的火焰识别算法该算法主要是基于火焰的颜色特征进行识别。

首先,将彩色图像转化为HSV颜色空间,并提取火焰的颜色范围。

然后,通过颜色区域分割,将火焰从背景中分离出来。

接着,通过图像处理技术,如平滑和边缘检测,对火焰进行进一步处理。

最后,通过计算颜色直方图、颜色矩等特征,来判断是否为火焰。

3.基于纹理特征的火焰识别算法该算法主要是基于火焰的纹理特征进行识别。

首先,将彩色图像转化为灰度图像,然后通过纹理分析方法,如方差、能量、对比度等,对火焰图像进行特征提取。

接着,可以利用分类器,如支持向量机(SVM)和神经网络(NN),通过训练样本对火焰进行分类识别。

最后,通过对测试样本的纹理特征进行计算,来判断是否为火焰。

4.基于深度学习的火焰识别算法该算法主要是基于深度学习和卷积神经网络(CNN)的火焰识别算法。

通过构建深层神经网络模型,如ResNet、Inception等,将火焰图像输入模型进行训练。

训练过程中,通过大量的火焰和非火焰图像进行样本训练,从而使网络能够学习到火焰的特征。

最后,通过对测试样本进行预测,来判断是否为火焰。

综上所述,火焰识别算法主要包括基于灰度图像、颜色特征、纹理特征和深度学习等不同的方法。

每种算法都有其优缺点,可以根据具体应用场景选择适合的算法。

同时,火焰识别算法在实际应用中还需要考虑光照、噪声等因素的影响,以提高识别准确率和实时性。

灰度化方法

灰度化方法

灰度化方法
灰度化指的是将彩色图像转换为灰度图像的过程。

灰度图像是一种只
包含黑白两种颜色的图像,它可以用来简化图像处理和识别的过程,去掉
彩色图像的冗余信息,提高处理效率。

灰度化方法有以下几种:
1.分量法:将彩色图像中的红、绿、蓝三个分量分别按照一定比例进
行加权平均,得到灰度图像。

2.最大值法:在彩色图像的RGB三个通道中取最大值作为灰度值。

3.最小值法:在彩色图像的RGB三个通道中取最小值作为灰度值。

4.平均值法:在彩色图像的RGB三个通道的像素值上进行平均,得到
灰度值。

5.加权平均法:在彩色图像的RGB三个通道的像素值上进行加权平均,得到灰度值。

加权平均法中的权值可以根据实际情况进行调整,以得到最
好的效果。

6.红色通道法:直接将彩色图像中的红色通道作为灰度图像。

7.绿色通道法:直接将彩色图像中的绿色通道作为灰度图像。

8.蓝色通道法:直接将彩色图像中的蓝色通道作为灰度图像。

不同的灰度化方法在不同的场景下可能有不同的效果,需要根据具体
的需求来选择合适的方法。

彩色图像灰度化

彩色图像灰度化

摘要图像处理是一门很有价值的学科,在科学技术不断发展的今天它的技术已趋于成熟。

同时图像之间的处理, 在实际应用中也显的越来越重要。

本课程设计的主要任务是完成数字图像处理中关于彩色图像灰度化的仿真,观察仿真结果,并进行结果分析。

本课程设计的系统开发平台为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、加权平均法根据重要性及其它指标,将三个分量以不同的权值进行加权平均。

grayimg函数

grayimg函数

grayimg函数
在计算机视觉和图像处理领域,grayimg 函数通常用于将彩色图像转换为灰度图像。

灰度图像是一种只有亮度信息而没有颜色信息的图像形式。

grayimg 函数的作用是将输入的彩色图像转换为灰度图像。

它通过将每个像素的 RGB 值转换为单一的灰度值来实现这一点。

灰度值表示像素的亮度,范围从 0 到 255。

在 Python 中,使用 OpenCV 库,可以通过以下方式将彩色图像转换为灰度图像:
python
import cv2
# 读取彩色图像
img = cv2.imread('input_image.jpg')
# 将彩色图像转换为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 显示灰度图像
cv2.imshow('Grayscale Image', gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述代码中,cv2.imread 函数用于读取输入的彩色图像。

然后,使用 cv2.cvtColor 函数将彩色图像转换为灰度图像。

最后,使用 cv2.imshow 函数显示灰度图像。

BMP图像由彩图变为灰度图

BMP图像由彩图变为灰度图

Date:6月21日任务:BMP真彩图像转为灰度图一,算法及公式:1,什么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:浮点算法:Gray=R*0.3+G*0.59+B*0.11整数方法:Gray=(R*30+G*59+B*11)/100移位方法:Gray =(R*28+G*151+B*77)&gt;&gt;8;平均值法:Gray=(R+G+B)/3;仅取绿色:Gray=G;通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。

2,改变象素矩阵的RGB值,来达到彩色图转变为灰度图加权平均值算法:根据光的亮度特性,其实正确的灰度公式应当是R=G=B=R*0.299+G*0.587+B0.144为了提高速度我们做一个完全可以接受的近似,公式变形如下:R=G=B=(R*3+G*6+B)/103,真正的24位真彩图与8位的灰度图的区别就在于,真彩图文件中没有调色板,灰度图有调色板,真彩图中的象素矩阵是RGB值,灰度图中的象素矩阵是调色板索引值。

源代码1只简单的改变象素矩阵的RGB值,来达到彩色图转为灰度图,并没有添加调色板。

源代码2添加了调色板。

二,源代码1,//可以输入文件名的源代码,有些变量定义进行了完善#include "stdio.h"#include "stdlib.h"#include "string.h"#include "windows.h"#include "conio.h"typedef struct{unsigned char b;unsigned char r;unsigned char g;}pixel;pixel a[640][480];unsigned char aa[640][480];void main(){BITMAPFILEHEADER FILEH;BITMAPINFOHEADER INFOH;RGBQUAD RGBH[256];char name[11];char *fname[11];printf("输入需要转换的图片名:");scanf("%s",&name);*fname=name;strcat(*fname,".bmp");printf("%s",*fname);FILE *fp;if((fp=fopen(*fname,"rb"))==NULL){//if((fp=fopen(*fname,"wb"))==NULL)//防止首次进入时初始化失败//{printf("打开文件%s失败!按任意键返回主菜单!",fname);getch();exit(1);//}}printf("%s",*fname);int LEN1=sizeof(BITMAPFILEHEADER);int LEN2=sizeof(BITMAPINFOHEADER);int X,Y;printf("\nlen=%d,%d\n",LEN1,LEN2);fread(&FILEH,sizeof(BITMAPFILEHEADER),1,fp); fread(&INFOH,sizeof(BITMAPINFOHEADER),1,fp); X=INFOH.biWidth;Y=INFOH.biHeight;//printf("%d*%d",X,Y);if(FILEH.bfType!=0x4d42){fclose(fp);printf("文件头不正确,不是bmp!");exit(1);}if(INFOH.biBitCount!=24&&INFOH.biBitCount!=8) {fclose(fp);printf("信息头不正确,不是bmp!");exit(1);}//*RGBH=A;unsigned char blue,green,red,color;int j,k;if(INFOH.biBitCount==8){fread(&RGBH,sizeof(RGBQUAD),256,fp);for(j=0;j<Y;j++)for(k=0;k<X;k++){fread(&color,1,1,fp);red=RGBH[color].rgbRed;green=RGBH[color].rgbGreen;blue=RGBH[color].rgbBlue;aa[j][k]=(unsignedchar)(0.299*(float)red+0.574*(float)green+0.114*(float)blue);}}if(INFOH.biBitCount==24){for(j=0;j<Y;j++)for(k=0;k<X;k++){fread(&blue,1,1,fp);fread(&green,1,1,fp);fread(&red,1,1,fp);a[j][k].b=blue;a[j][k].g=green;a[j][k].r=red;aa[j][k]=(unsignedchar)(0.299*(float)red+0.574*(float)green+0.114*(float)blue);}}//printf("ok");fclose(fp);printf("输入输出的灰度图片名:");scanf("%s",&name);strcat(*fname,".bmp");if((fp=fopen(*fname,"wb"))==NULL){fclose(fp);printf("打开图片124.bmp失败");exit(1);}INFOH.biBitCount=8;fwrite(&FILEH,LEN1,1,fp);fwrite(&INFOH,LEN2,1,fp);int m=0;for(int i=0;i<256;i++){fwrite(&i,1,1,fp);fwrite(&i,1,1,fp);fwrite(&i,1,1,fp);fwrite(&m,1,1,fp);}for(j=0;j<Y;j++)for(k=0;k<X;k++){fwrite(&aa[j][k],1,1,fp);}fclose(fp);printf("生成灰度图%s成功!\n",*fname); }2,bmpFormat.h--------------------------------------------#ifndef _BMPTEST_H_#define _BMPTEST_H_#include <stdio.h>typedef unsigned char BYTE;typedef unsigned short WORD;typedef struct {long imageSize;long blank;long startPostition;}BmpHead;typedef struct {long length;long width;long height;WORD colorPlane;WORD bitColor;long zipFormat;long readSize;long xPels;long yPels;long colorUse;long colorImportant;}InfoHead;typedef struct {BYTE rgbBlue;BYTE rgbGreen;BYTE rgbRed;BYTE rgbReserved;}RGBMixPlate;#endif-------------------------------------------- create.c-------------------------------------------- #include "bmpFormat.h"#include <tiffio.h>#include <stdlib.h>int main(int argc, char *argv[]){//tiff文件涉及变量TIFF *image; //tiff文件指针uint32 width, height; //图片的宽度和高度char *buffer; //保存tiff文件中的图像灰度信息缓存tsize_t stripSize; //tiff 中图像的条大小unsigned long bufferSize; //缓存大小int stripMax, stripCount; //图像总共的条数和读条信息时的控制变量unsigned long imageOffset, result; //读文件信息时的控制变量和每次读的结果//循环控制变量unsigned int i;unsigned int j;//bmp文件涉及变量BmpHead bmphead; //bmp文件头(不包括固定信息)InfoHead infohead; //bmp信息头RGBMixPlate *color; //调色板BYTE *index; //图像数据在调色板中的索引值FILE *bmp; //bmp文件指针char bm[2]={'B','M'}; //bmp文件头中的一块固定信息,表示这是一张BMP图片‘// 打开tiff图片if((image = TIFFOpen(argv[1], "r")) == NULL){fprintf(stderr, "Could not open incoming image\n");return -1;}//获取图片的宽度和高度TIFFGetField(image, TIFFTAG_IMAGEWIDTH, &width);TIFFGetField(image, TIFFTAG_IMAGELENGTH, &height);stripSize = TIFFStripSize (image); //每条的大小stripMax = TIFFNumberOfStrips (image); //一共有多少条imageOffset = 0; //后面读取文件信息时使用的偏移量//根据文件信息申请相应的数据空间bufferSize = TIFFNumberOfStrips (image) * stripSize;if((buffer = (char *) malloc(bufferSize)) == NULL){fprintf(stderr, "Could not allocate enough memory for the uncompressed image\n");return -1;}//读取文件中的灰度信息for (stripCount = 0; stripCount < stripMax; stripCount++){if((result = TIFFReadEncodedStrip (image, stripCount,buffer + imageOffset,stripSize)) == -1){fprintf(stderr, "Read error on input strip number %d\n", stripCount);return -1;}imageOffset += result;}//bmp文件头成员赋值bmphead.blank=0;//保留字,为0bmphead.imageSize=14+40+4*256+width*height; //图片的大小=文件头大小+信息头大小+调色板大小+实际图片大小bmphead.startPostition=14+40+4*256; //图片实际数据相对于文件头的偏移量//bmp信息头成员赋值(可参见BMP文件解析每个成员的定义)infohead.length=40;infohead.width=width;infohead.height=height;infohead.colorPlane=1;infohead.bitColor=8;infohead.zipFormat=0;infohead.readSize=width*height;infohead.xPels=400;infohead.yPels=300;infohead.colorUse=0;infohead.colorImportant=0;//申请调色板和数据域空间color=(RGBMixPlate *)malloc(sizeof(RGBMixPlate)*256);index=(BYTE *)malloc(sizeof(BYTE)*infohead.readSize);//生成256色灰度调色板for(i=0;i<256;i++){color[i].rgbBlue=i;color[i].rgbGreen=i;color[i].rgbRed=i;color[i].rgbReserved=0;}//256色灰度bmp的数据信息实际就是该灰度在相应灰度值的调色板中的颜色for(i=0;i<height;i++)for(j=0;j<width;j++)index[i*width+j]=buffer[(height-1-i)*width+j];//tiff图片是从左上到右下,bmp图片是从左下到右上//创建bmp图片bmp=fopen(argv[2],"wb");if(bmp==NULL){printf("open new file error\n");return -1;}//写入相应的数据fwrite(bm,1,2,bmp);fwrite(&bmphead,1,12,bmp);fwrite(&infohead,1,40,bmp);fwrite(color,1,256*sizeof(color),bmp);fwrite(index,1,infohead.readSize,bmp);fclose(bmp);//释放有关资源free(buffer);free(color);free(index);TIFFClose(image);fclose(bmp);return 0;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

彩色图像转灰度图像L=imread('i:\1.jpg')L=double(L);Xrgb=0.2990*L(:,:,1)+0.5870*L(:,:,2)+0.1140*L(:,:,3); NbColors=255;X=wcodemat(Xrgb,NbColors);map1=gray(NbColors);image(X);colormap(map1);title('原图像的灰度图');小波压缩-低频信息保留压缩方式L=imread('i:\1.jpg')L=double(L);Xrgb=0.2990*L(:,:,1)+0.5870*L(:,:,2)+0.1140*L(:,:,3); NbColors=255;X=wcodemat(Xrgb,NbColors);map1=gray(NbColors);image(X);colormap(map1);title('原图像的灰度图');axis square;disp('灰度图像X的大小');whos('X')[c,s]=wavedec2(X,2,'bior3.7');ca1=appcoef2(c,s,'bior3.7',1);ch1=detcoef2('h',c,s,1);%水平方向cv1=detcoef2('v',c,s,1);%垂直方向cd1=detcoef2('d',c,s,1);%斜线方向a1=wrcoef2('a',c,s,'bior3.7',1);h1=wrcoef2('h',c,s,'bior3.7',1);v1=wrcoef2('v',c,s,'bior3.7',1);d1=wrcoef2('d',c,s,'bior3.7',1);%各频率成分重构c1=[a1,h1;v1,d1];image(c1);colormap(gray);axis square;title('分解后低频和高频信息');ca1=appcoef2(c,s,'bior3.7',1);ca1=wcodemat(ca1,440,'mat',0);ca1=0.5*ca1;disp('第一次压缩后图像的大小为:');image(ca1);colormap(gray);%colormap(map);axis square;title('第一次压缩图像');whos('ca1')ca2=appcoef2(c,s,'bior3.7',2);ca2=0.25*ca2;image(ca2);colormap(gray);%colormap(map);axis square;title('第二次压缩图像');disp('第二次压缩后图像大小为:');whos('ca2')灰度图像X 的大小Name Size Bytes ClassX 150x125 150000 double arrayGrand total is 18750 elements using 150000 bytes第一次压缩后图像的大小为:Name Size Bytes Classca1 82x70 45920 double array Grand total is 5740 elements using 45920 bytes第二次压缩后图像大小为:Name Size Bytes Classca2 48x42 16128 double array Grand total is 2016 elements using 16128 bytes二维小波压缩H=imread('i:\1.jpg')H=double(H);Grgb=0.2990*H(:,:,1)+0.5870*H(:,:,2)+0.1140*H(:,:,3); NbColors=255;G=wcodemat(Grgb,NbColors);map2=gray(NbColors);figure(4);image(G);colormap(map2);title('原图像的灰度图');%转换成为灰度级索引图像[CA1,CH1,CV1,CD1]=dwt2(G,'bior3.7');%从分解系数中提取近似和细节[CA1,CH1,CV1,CD1]=dwt2(G,'bior3.7');A1=upcoef2('a',CA1,'bior3.7',1);H1=upcoef2('h',CH1,'bior3.7',1);V1=upcoef2('v',CV1,'bior3.7',1);D1=upcoef2('d',CD1,'bior3.7',1);%显示近似和细节%figure (' name ','近似分量A1');colormap(map2);subplot(2,2,1);image(wcodemat(A1,192));title('近似A1');subplot(2,2,2);image(wcodemat(H1,192));title('水平细节H1');subplot(2,2,3);image(wcodemat(V1,192));title('垂直细节V1');subplot(2,2,4);image(wcodemat(D1,192));title('对角细节D1');%对图像进行多尺度分解[C,S]=wavedec2(G,2,'bior3.7');%提取分解后的近似和细节系数CA2=appcoef2(C,S,'bior3.7',2);[CH2,CV2,CD2]=detcoef2('all',C,S,2);[CH1,CV1,CD1]=detcoef2('all',C,S,2);%从系数C重构第二层近似A2=wrcoef2('a',C,S,'bior3.7',2);H1=wrcoef2('h',C,S,'bior3.7',1);V1=wrcoef2('v',C,S,'bior3.7',1);D1=wrcoef2('d',C,S,'bior3.7',1);H2=wrcoef2('h',C,S,'bior3.7',2);V2=wrcoef2('v',C,S,'bior3.7',2);D2=wrcoef2('d',C,S,'bior3.7',2);%显示多尺度分解的结果%figure (' name ','多尺度分解后的近似与细节'); colormap(map2);subplot(2,4,1);image(wcodemat(A1,192));title('近似A1');subplot(2,4,2);image(wcodemat(H1,192));title('水平细节H1');subplot(2,4,3);image(wcodemat(V1,192));title('垂直细节V1');subplot(2,4,4);image(wcodemat(D1,192));title('对角细节D1');subplot(2,4,5);image(wcodemat(A2,192));title('近似A2');subplot(2,4,6);image(wcodemat(H2,192));title('水平细节H2');subplot(2,4,7);image(wcodemat(V2,192));title('垂直细节V2');subplot(2,4,8);image(wcodemat(D2,192));title('对角细节D2');%从多尺度分解后的系数重构原始图像并显示结果G0=waverec2(C,S,'bior3.7');%figure ('name','多尺度分解后的系数重构原始图像');image(G0);colormap(map2);colorbar;小波包压缩F=imread('i:\1.jpg')F=double(F);Ergb=0.2990*F(:,:,1)+0.5870*F(:,:,2)+0.1140*F(:,:,3);NbColors=255;E=wcodemat(Ergb,NbColors);map4=gray(NbColors);figure('name','小波包压缩');subplot(1,2,1);image(E);colormap(map4);title('原始图像');%==================================%采用默认的全局阈值进行图像压缩处理[thr,sorh,keepapp,crit]=ddencmp('cmp','wp',E);[Ec,treed,perf0,perfl2]=wpdencmp(E,sorh,3,'bior3.1',crit,thr,keepapp); subplot(1,2,2);image(Ec);colormap(map4);title('压缩后的图像');%==================================%给出压缩效率disp('小波分解系数中置0的系数个数百分比:'); perf0disp('压缩后图像剩余能量百分比:');perfl2小波分解系数中置0的系数个数百分比:perf0 =53.0851压缩后图像剩余能量百分比:perfl2 =99.9981DCT压缩x=imread('i:\1.jpg')I=rgb2gray(x);J=dct2(I);%figure('name','色图');imshow(log(abs(J)));colormap(jet(64));colorbar;J(abs(J)<10)=0;K=idct2(J)/255;%figure('name','DCT压缩的图像'); imshow(I);disp('DCT压缩的图像的大小:');whos('I')%figure('name','DCT压缩编码后的图像'); imshow(K);disp('DCT压缩编码后的图像的大小:'); whos('K')DCT压缩的灰度图像原图像的色图x=imread('i:\1.jpg')I=rgb2gray(x);J=dct2(I);%figure('name','色图');imshow(log(abs(J)));colormap(jet(64));colorbar;J(abs(J)<10)=0;K=idct2(J)/255;小波消噪A=imread('i:\1.jpg')A=double(A);Brgb=0.2990*A(:,:,1)+0.5870*A(:,:,2)+0.1140*A(:,:,3); NbColors=255;B=wcodemat(Brgb,NbColors);map3=gray(NbColors);figure('name','小波消噪处理')subplot(2,2,1);image(B);%colormap(map3);title('原始图像灰度图');axis square;%生成含噪图像并图示init=2055615866;randn('seed',init);BB=B+8*randn(size(B));subplot(2,2,2);image(BB);colormap(map3);title('含噪图像');axis square;%对图像进行消噪处理%用小波函数coif2对图像XX进行2层分解[cc,dd]=wavedec2(BB,2,'coif2');n=[1,2];%设置尺度向量p=[10.28,24.08];%设置阈值向量%对三个高频系数进行阈值处理nc=wthcoef2('h',cc,dd,n,p,'s');nc=wthcoef2('v',cc,dd,n,p,'s');nc=wthcoef2('d',cc,dd,n,p,'s');B1=waverec2(nc,dd,'coif2');subplot(2,2,3);image(B1);colormap(map3);title('第一次消噪后的图像');axis square;%再次对三个高频系数进行阈值处理mc=wthcoef2('h',nc,dd,n,p,'s');mc=wthcoef2('v',nc,dd,n,p,'s');mc=wthcoef2('d',nc,dd,n,p,'s');%对更新后的小波分解结构进行重构并图示结果B2=waverec2(mc,dd,'coif2');subplot(2,2,4);image(B2);colormap(map3);title('第二次消噪后的图像');axis square;。

相关文档
最新文档