彩色图像转灰度图像
- 格式:doc
- 大小:1.72 MB
- 文档页数:10
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彩⾊图像转灰度图像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图像呈现更加清晰的咳嗽病灶,从而更加准确地诊断肺炎。
此外,灰度图像处理技术还可以作为医学影像处理中的预处理环节使用。
在进行医学影像处理时,往往需要进行一系列的处理、筛选和分析过程。
而灰度图像处理技术能够将预处理步骤中的数据处理得更加精确,使得后续的分析和处理更具有针对性和有效性。
总之,灰度图像处理技术在医学图像识别领域中的应用,对于精准诊断和科学治疗都有着非常重要的作用。
未来,随着这项技术的不断发展和完善,相信它会在医学影像处理中发挥更加重要的作用,对人类的健康事业做出更加重要的贡献。
目录第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级灰度图。
彩色图像转灰度图像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;。