完整版真彩色图像处理
- 格式:docx
- 大小:101.72 KB
- 文档页数:9
如何使用PS软件进行图像色彩平衡批量处理在当今的数字化时代,图像处理已经成为了一项重要的技能。
无论是专业的设计师还是摄影爱好者,都经常需要对大量的图像进行色彩平衡的调整。
Photoshop(简称PS)作为一款功能强大的图像处理软件,为我们提供了丰富的工具和选项来实现这一目标。
下面,我将详细介绍如何使用 PS 软件进行图像色彩平衡批量处理。
首先,我们需要打开 PS 软件。
在打开软件后,点击“文件”菜单,选择“脚本”,然后再选择“图像处理器”。
在弹出的“图像处理器”对话框中,我们可以看到几个重要的选项。
首先是“选择要处理的图像”,这里我们可以选择要进行批量处理的图像所在的文件夹。
然后是“选择位置以存储处理的图像”,这是指定处理后图像的保存位置,您可以根据自己的需求选择一个合适的文件夹。
接下来,在“文件类型”选项中,我们可以选择保存的图像格式,比如 JPEG、PNG 等。
同时,还可以设置图像的品质、分辨率等参数。
在完成上述基本设置后,关键的步骤来了——“运行动作”。
如果您之前没有创建过色彩平衡的动作,那么需要先创建一个。
点击“窗口”菜单,选择“动作”,在弹出的动作面板中,点击右下角的“创建新动作”按钮。
给动作起一个易于识别的名字,比如“色彩平衡调整”,然后点击“记录”。
此时,PS 会开始记录您接下来的操作。
我们点击“图像”菜单,选择“调整”,然后再选择“色彩平衡”。
在弹出的“色彩平衡”对话框中,根据您的需求调整各项参数,比如增加红色、减少蓝色等。
调整完成后,点击“确定”。
完成色彩平衡的调整后,点击动作面板中的“停止播放/记录”按钮,这样一个色彩平衡的动作就创建完成了。
回到“图像处理器”对话框,在“运行动作”选项中,选择我们刚刚创建的“色彩平衡调整”动作。
一切准备就绪后,点击“运行”按钮,PS 就会自动对所选文件夹中的所有图像进行色彩平衡的批量处理,并将处理后的图像保存到指定的文件夹中。
需要注意的是,在进行批量处理之前,最好先对少量的图像进行测试,以确保色彩平衡的调整效果符合您的预期。
rgb=cat(3,rgb_R,rgb_G,rgb_B);figure,imshow(rgb),title('RGB彩色图像');截图:(2)编写MATLAB程序,将一彩色图像从RGB空间转换为HIS空间,并观察其效果。
如例9.2所示。
程序:rgb=imread('LenaRGB.bmp');figure,imshow(rgb);rgb1=im2double(rgb);r=rgb1(:,:,1);g=rgb1(:,:,2);b=rgb1(:,:,3);I=(r+g+b)/3figure,imshow(I);tmp1=min(min(r,g),b);tmp2=r+g+b;tmp2(tmp2==0)=eps;S=1-3.*tmp1./tmp2;figure,imshow(S);tmp1=0.5*((r-g)+(r-b));tmp2=sqrt((r-g).^2+(r-b).*(g-b));theta=acos(tmp1./(tmp2+eps));H=theta;H(b>g)=2*pi-H(b>g);H=H/(2*pi);H(S==0)=0;figure,imshow(H);截图:(3)编写MATLAB程序,将一彩色图像在RGB空间进行彩色分割,并观察其效果。
如例9.11所示。
程序:rgb=imread('LenaRGB.bmp');figure,imshow(rgb);rgb1=im2double(rgb);r=rgb1(:,:,1);figure,imshow(r);g=rgb1(:,:,2);figure,imshow(g);b=rgb1(:,:,3);figure,imshow(b);r1=r;r1_u=mean(mean(r1(:)));[m,n]=size(r1);sd1=0.0;for i=1:mfor j=1:nsd1= sd1+(r1(i,j)-r1_u)*(r1(i,j)-r1_u);endendr1_d=sqrt(sd1/(m*n));r2=zeros(size(rgb1,1),size(rgb1,2));ind=find((r>r1_u-1.25*r1_d)&(r<r1_u+1.25*r1_d));r2(ind)=1;figure,imshow(r2);截图:(4)编写MATLAB程序,将一彩色图像在向量空间进行边缘检测,并观察其效果。
第1章绪论1.1数字图像数字图像,又称数码图像或数位图像,是二维图像用有限数字数值像素的表示。
数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用计算机或数字电路存储和处理的图像。
像素(或像元,Pixel)是数字图像的基本元素,像素是在模拟图像数字化时对连续空间进行离散化得到的。
每个像素具有整数行(高)和列(宽)位置坐标,同时每个像素都具有整数灰度值或颜色值。
通常,像素在计算机中保存为二维整数数阻的光栅图像,这些值经常用压缩格式进行传输和储存。
数字图像可以许多不同的输入设备和技术生成,例如数码相机、扫描仪、坐标测量机、seismographic profiling、airborne radar等等,也可以从任意的非图像数据合成得到,例如数学函数或者三维几何模型,三维几何模型是计算机图形学的一个主要分支。
数字图像处理领域就是研究它们的变换算法。
1.2设计平台本次设计采用的平台是MATLAB 7.0。
MATLAB编程语言被业界称为第四代计算机语言,它允许按照数学推导的习惯编写程序。
MATLAB7.0的工作环境包括当前工作窗口、命令历史记录窗口、命令控制窗口、图形处理窗口、当前路径选择菜单、程序编辑器、变量查看器、模型编辑器、GUI编辑器以及丰富的函数库和MATLAB附带的大量M文件。
MATLAB是由美国Math Works公司生产的一个为科学和工程计算专门设计的交互式大型软件,是一个可以完成各种计算和数据处理的、可视化的、强大的计算工具。
它集图示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂计算的领域得到了广泛应用。
MATLAB作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担,被称为第四代编程语言。
在MATLAB设计环境中,图像处理工具箱提供一套全方位的参照标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。
卫星图像处理流程一.图像预处理1.降噪处理由于传感器的因素,一些获取的遥感图像中,会出现周期性的噪声,我们必须对其进行消除或减弱方可使用。
(1)除周期性噪声和尖锐性噪声周期性噪声一般重叠在原图像上,成为周期性的干涉图形,具有不同的幅度、频率、和相位。
它形成一系列的尖峰或者亮斑,代表在某些空间频率位置最为突出。
一般可以用带通或者槽形滤波的方法来消除。
消除尖峰噪声,特别是与扫描方向不平行的,一般用傅立叶变换进行滤波处理的方法比较方便。
图1 消除噪声前图2 消除噪声后(2)除坏线和条带去除遥感图像中的坏线。
遥感图像中通常会出现与扫描方向平行的条带,还有一些与辐射信号无关的条带噪声,一般称为坏线。
一般采用傅里叶变换和低通滤波进行消除或减弱。
图3 去条纹前图4 去条纹后图5 去条带前图6 去条带后2.薄云处理由于天气原因,对于有些遥感图形中出现的薄云可以进行减弱处理。
3.阴影处理由于太阳高度角的原因,有些图像会出现山体阴影,可以采用比值法对其进行消除。
二.几何纠正通常我们获取的遥感影像一般都是Level2级产品,为使其定位准确,我们在使用遥感图像前,必须对其进行几何精纠正,在地形起伏较大地区,还必须对其进行正射纠正。
特殊情况下还须对遥感图像进行大气纠正,此处不做阐述。
1.图像配准为同一地区的两种数据源能在同一个地理坐标系中进行叠加显示和数学运算,必须先将其中一种数据源的地理坐标配准到另一种数据源的地理坐标上,这个过程叫做配准。
(1)影像对栅格图像的配准将一幅遥感影像配准到相同地区另一幅影像或栅格地图中,使其在空间位置能重合叠加显示。
图7 图像配准前图8 图像配准后(2)影像对矢量图形的配准将一幅遥感影像配准到相同地区一幅矢量图形中,使其在空间位置上能进行重合叠加显示。
2.几何粗纠正这种校正是针对引起几何畸变的原因进行的,地面接收站在提供给用户资料前,已按常规处理方案与图像同时接收到的有关运行姿态、传感器性能指标、大气状态、太阳高度角对该幅图像几何畸变进行了校正.3.几何精纠正为准确对遥感数据进行地理定位,需要将遥感数据准确定位到特定的地理坐标系的,这个过程称为几何精纠正。
CC++BMP(24位真彩⾊)图像处理(2)------图像截取对上⼀篇博客《C/C++ BMP(24位真彩⾊)图像处理(1)------图像打开与数据区处理》的代码做⼩部分的修改,就可以进⾏BMP图像的截取操作,代码如下:#include <string.h>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include<time.h>//时间相关头⽂件,可⽤其中函数计算图像处理速度#define WIDTHBYTES(bits) (((bits)+31)/32*4)//⽤于使图像宽度所占字节数为4byte的倍数#define MYCUT_HEIGHT 100 //截取⾼度#define MYCUT_WIDTH 100 //截取宽度#define BEGIN_X 0 //截取位图开始位置X坐标#define BEGIN_Y 0 //截取位图开始位置Y坐标typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned long DWORD;typedef long LONG;//位图⽂件头信息结构定义//其中不包含⽂件类型信息(由于结构体的内存结构决定,要是加了的话将不能正确读取⽂件信息)typedef struct tagBITMAPFILEHEADER {DWORD bfSize; //⽂件⼤⼩WORD bfReserved1; //保留字,不考虑WORD bfReserved2; //保留字,同上DWORD bfOffBits; //实际位图数据的偏移字节数,即前三个部分长度之和} BITMAPFILEHEADER;//信息头BITMAPINFOHEADER,也是⼀个结构,其定义如下:typedef struct tagBITMAPINFOHEADER{//public:DWORD biSize; //指定此结构体的长度,为40LONG biWidth; //位图宽LONG biHeight; //位图⾼WORD biPlanes; //平⾯数,为1WORD biBitCount; //采⽤颜⾊位数,可以是1,2,4,8,16,24,新的可以是32DWORD biCompression; //压缩⽅式,可以是0,1,2,其中0表⽰不压缩DWORD biSizeImage; //实际位图数据占⽤的字节数LONG biXPelsPerMeter; //X⽅向分辨率LONG biYPelsPerMeter; //Y⽅向分辨率DWORD biClrUsed; //使⽤的颜⾊数,如果为0,则表⽰默认值(2^颜⾊位数)DWORD biClrImportant; //重要颜⾊数,如果为0,则表⽰所有颜⾊都是重要的} BITMAPINFOHEADER;void main(){long now=0;now=clock();//存储图像处理开始时间BITMAPFILEHEADER bitHead,writebitHead;BITMAPINFOHEADER bitInfoHead,writebitInfoHead;FILE* pfile;//输⼊⽂件FILE* wfile;//输出⽂件char strFile[50]="E:\\testpicture\\1.bmp";//打开图像路径,BMP图像必须为24位真彩⾊格式char strFilesave[50]="E:\\testpicture\\2.bmp";//处理后图像存储路径pfile = fopen(strFile,"rb");//⽂件打开图像wfile = fopen(strFilesave,"wb");//打开⽂件为存储修改后图像做准备//读取位图⽂件头信息WORD fileType;fread(&fileType,1,sizeof(WORD),pfile);fwrite(&fileType,1,sizeof(WORD),wfile);if(fileType != 0x4d42){printf("file is not .bmp file!");return;}//读取位图⽂件头信息fread(&bitHead,1,sizeof(tagBITMAPFILEHEADER),pfile);writebitHead=bitHead;//由于截取图像头和源⽂件头相似,所以先将源⽂件头数据赋予截取⽂件头//读取位图信息头信息fread(&bitInfoHead,1,sizeof(BITMAPINFOHEADER),pfile);writebitInfoHead=bitInfoHead;//同位图⽂件头相似writebitInfoHead.biHeight=MYCUT_HEIGHT;//为截取⽂件重写位图⾼度writebitInfoHead.biWidth=MYCUT_WIDTH;//为截取⽂件重写位图宽度int mywritewidth=WIDTHBYTES(writebitInfoHead.biWidth*writebitInfoHead.biBitCount);//BMP图像实际位图数据区的宽度为4byte的倍数,在此计算实际数据区宽度 writebitInfoHead.biSizeImage=mywritewidth*writebitInfoHead.biHeight;//计算位图实际数据区⼤⼩writebitHead.bfSize=54+writebitInfoHead.biSizeImage;//位图⽂件头⼤⼩为位图数据区⼤⼩加上54bytefwrite(&writebitHead,1,sizeof(tagBITMAPFILEHEADER),wfile);//写回位图⽂件头信息到输出⽂件fwrite(&writebitInfoHead,1,sizeof(BITMAPINFOHEADER),wfile);//写回位图信息头信息到输出⽂件int width = bitInfoHead.biWidth;int height = bitInfoHead.biHeight;//分配内存空间把源图存⼊内存int l_width = WIDTHBYTES(width*bitInfoHead.biBitCount);//计算位图的实际宽度并确保它为4byte的倍数int write_width = WIDTHBYTES(writebitInfoHead.biWidth*writebitInfoHead.biBitCount);//计算写位图的实际宽度并确保它为4byte的倍数BYTE *pColorData=(BYTE *)malloc(height*l_width);//开辟内存空间存储图像数据memset(pColorData,0,height*l_width);BYTE *pColorDataMid=(BYTE *)malloc(mywritewidth*MYCUT_HEIGHT);//开辟内存空间存储图像处理之后数据memset(pColorDataMid,0,mywritewidth*MYCUT_HEIGHT);long nData = height*l_width;long write_nData = mywritewidth*MYCUT_HEIGHT;//截取的位图数据区长度定义//把位图数据信息读到数组⾥fread(pColorData,1,nData,pfile);//图像处理可通过操作这部分数据加以实现//截取图像数据区操作,在操作过程中注意截取图像是否越界,可在此处加⼊代码进⾏越界处理for(int hnum=height-BEGIN_Y-MYCUT_HEIGHT;hnum<height-BEGIN_Y;hnum++)//由于BMP图像的数据存储格式起点是图像的左下⾓,所以需要进⾏坐标换算操作 for(int wnum=BEGIN_X;wnum<BEGIN_X+MYCUT_WIDTH;wnum++){int pixel_point=hnum*l_width+wnum*3;//数组位置偏移量,对应于图像的各像素点RGB的起点int write_pixel_point=(hnum-height+BEGIN_Y+MYCUT_HEIGHT)*mywritewidth+(wnum-BEGIN_X)*3;pColorDataMid[write_pixel_point]=pColorData[pixel_point];pColorDataMid[write_pixel_point+1]=pColorData[pixel_point+1];pColorDataMid[write_pixel_point+2]=pColorData[pixel_point+2];}fwrite(pColorDataMid,1,write_nData,wfile); //将处理完图像数据区写回⽂件fclose(pfile);fclose(wfile);printf("图像处理完成\n");printf("运⾏时间为:%dms\n",int(((double)(clock()-now))/CLOCKS_PER_SEC*1000));//输出图像处理花费时间信息}。
第四部分真彩色增强、真彩色增强方法图4.1真彩色增强原理图1、对HSI 图像亮度增强⑴、将R , G , B 分量图转化为H , S , I 分量图;⑵、利用对灰度图增强的方法增强其中的I 分量图; ⑶、再将结果转化为用R , G , B 分量图来显示。
以上方法并不改变原图的彩色内容, 但增强后的图看起来会有些不同。
这是因为尽管色调和饱和度没有变化,但亮度分量得到了增强,整个图会比原来更亮图4.3是基于matlab 以增强亮度的方法进行真彩色增强的图像,其代码见附W 卜詡|押号鼻)L U(a)增强前图像P ■*口ifl・・・*■曲・(b)增强后图像图4.2 对HSI进行亮度增强结果结论:图(b)明显比图(a)要亮的多,在视觉效果上,图(b)比较让人觉得美好。
2、对HSI图像进行对比度增强图4.4是基于matlab以增强对比度的方法进行真彩色增强的图像,其代码见附他■如n ? tiw图4.3 对HSI增强对比度增强的结论:图(b)的视觉效果明显比图(a)要好的多,清晰的多,颜色比(a)要深。
3、对HSI图像进行亮度和饱和度的增强图4.5是基于matlab以增强亮度和饱和度的方法进行真彩色增强的图像,其代码见附录图4.4对HSI图像进行增强结果结论:这是对前两个方法的综合,很显然,图(b)比图(a)要亮,要清晰,视觉效果比以上两种方法分别做要好的多。
二、直接在rgb空间对图像增强图4.6是基于matlab在rgb空间增强图像,其代码见附录Eompes-ti in图4.5对RGB图像进行增强结果以下是基于matlab 以增强亮度的方法进行真彩色增强的代码:%% 彩色图像亮度增强 (执行速度较慢)clcclearfc = imread( 'E:\maomao.jpg' );figure(1);imshow(fc)title( ' 原始真彩色( 256*256*256 色)图像' ) fr = fc(:,:,1);fg = fc(:,:,2);fb = fc(:,:,3);% imshow(fr)% title(' 红色分量图像')% imshow(fg)% title(' 绿色分量图像')% imshow(fb)% title(' 蓝色分量图像')h = rgb2hsi(fc);H = h(:,:,1);S = h(:,:,2);I = h(:,:,3);I =I*1.5;% imshow(H)% title(' 色调分量图像')% imshow(S)% title(' 饱和度分量图像')% imshow(I)% title(' 亮度分量图像')h = cat(3,H,S,I); %cat 函数是拼接数组的函数,这里将在第3 维上进行拼接。
f = hsi2rgb(h); %增强亮度分量后的rgb 图像f = min(f,1); %保证元素值最大为1, 因为按公式转换为rgb 后可能出现大于1 的情况figure(2);imshow(f)title('仅增强HSI图像的亮度分量所得到的RGB图像')基于matlab以增强对比度的方法进行真彩色增强代码:%% 例6.8 彩色图像亮度增强 (执行速度较慢)clcclearfc = imread( 'I:\maomao.jpg' );figure(1);imshow(fc)title( ' 原始真彩色( 256*256*256 色)图像' )fr = fc(:,:,1);fg = fc(:,:,2);% imshow(fr)% title(' 红色分量图像')% imshow(fg)% title(' 绿色分量图像')% imshow(fb)% title(' 蓝色分量图像')h = rgb2hsi(fc);H = h(:,:,1);S = h(:,:,2);I = h(:,:,3);S=S*2.0;% imshow(H)% title(' 色调分量图像')% imshow(S)% title(' 饱和度分量图像')% imshow(I)% title(' 亮度分量图像')h = cat(3,H,S,I); %cat 函数是拼接数组的函数,这里将在第 3 维上进行拼接。
f = hsi2rgb(h); %增强亮度分量后的rgb 图像f = min(f,1); %保证元素值最大为1, 因为按公式转换为rgb 后可能出现大于1 的情况figure(2);imshow(f)title('增强HSI图像的对比度所得到的RGB图像')基于matlab以增强亮度和饱和度的方法进行真彩色增强的图像%% 例6.8 彩色图像亮度增强 (执行速度较慢)clcclearfc = imread( 'I:\maomao.jpg' ); figure(1);imshow(fc)fr = fc(:,:,1);fg = fc(:,:,2);fb = fc(:,:,3);% imshow(fr)% title(' 红色分量图像')% imshow(fg)% title(' 绿色分量图像')% imshow(fb)% title(' 蓝色分量图像')h = rgb2hsi(fc);H = h(:,:,1);S = h(:,:,2);I =I*2.0;S =S*2.0;% imshow(H)% title(' 色调分量图像')% imshow(S)% title(' 饱和度分量图像')% imshow(I)% title(' 亮度分量图像')h = cat(3,H,S,I); %cat 函数是拼接数组的函数,这里将在第3 维上进行拼接。
f = hsi2rgb(h); %增强亮度分量后的rgb 图像f = min(f,1); %保证元素值最大为1, 因为按公式转换为rgb 后可能出现大于1 的情况figure(2);imshow(f)rgb图像转化为hsi图像的代码:rgb2hsi(rgb)function hsi = rgb2hsi(rgb) %RGB2HSI Converts an RGB image to HSI.% HSI = RGB2HSI(RGB) converts an RGB image to HSI. The input image% is assumed to be of size M-by-N-by-3, where the third dimension% accounts for three image planes: red, green, and blue, in that% order. If all RGB component images are equal, the HSI conversion% is undefined. The input image can be of class double (with values % in the range [0, 1]), uint8, or uint16.%% The output image, HSI, is of class double, where:% hsi(:, :, 1) = hue image normalized to the range [0, 1] by% dividing all angle values by 2*pi.% hsi(:, :, 2) = saturation image, in the range [0, 1].% hsi(:, :, 3) = intensity image, in the range [0, 1].% Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins% Digital Image Processing Using MATLAB, Prentice-Hall, 2004% $Revision: 1.5 $ $Date: 2005/01/18 13:44:59 $% Extract the individual component images.rgb = im2double(rgb);r = rgb(:, :, 1);g = rgb(:, :, 2);b = rgb(:, :, 3);% Implement the conversion equations.num = 0.5*((r - g) + (r - b));den = sqrt((r - g).A2 + (r - b).*(g - b));theta = acos(num./(den + eps));H = theta;H(b > g) = 2*pi - H(b > g);num = min(min(r, g), b);den = r + g + b; den(den == 0) = eps;S = 1 - 3.* num./den;H(S == 0) = 0;I = (r + g + b)/3;% Combine all three results into an hsi image.hsi = cat(3, H, S, I);hsi图像转化为rgb图像的代码:hsi2rgb(hsi)function rgb = hsi2rgb(hsi)%HSI2RGB Converts an HSI image to RGB.% RGB = HSI2RGB(HSI) converts an HSI image to RGB, where HSI is% assumed to be of class double with:% hsi(:, :, 1) = hue image, assumed to be in the range% [0, 1] by having been divided by 2*pi.% hsi(:, :, 2) = saturation image, in the range [0, 1].% hsi(:, :, 3) = intensity image, in the range [0, 1].%% The components of the output image are:% rgb(:, :, 1) = red.% rgb(:, :, 2) = green.% rgb(:, :, 3) = blue.% Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins% Digital Image Processing Using MATLAB, Prentice-Hall, 2004% $Revision: 1.5 $ $Date: 2003/10/13 01:01:06 $% Extract the individual HSI component images. hsi=im2double(hsi);H = hsi(:, :, 1) * 2 * pi;S = hsi(:, :, 2);I = hsi(:, :, 3);% Implement the conversion equations.R = zeros(size(hsi, 1), size(hsi, 2));G = zeros(size(hsi, 1), size(hsi, 2));B = zeros(size(hsi, 1), size(hsi, 2));% RG sector (0 <= H < 2*pi/3).idx = find( (0 <= H) & (H < 2*pi/3));B(idx) = I(idx) .* (1 - S(idx));R(idx) = I(idx) .* (1 + S(idx) .*cos(H(idx)) ./cos(pi/3 - H(idx)));G(idx) = 3*I(idx) - (R(idx) + B(idx));% BG sector (2*pi/3 <= H < 4*pi/3).idx = find( (2*pi/3 <= H) & (H < 4*pi/3) );R(idx) = I(idx) .* (1 - S(idx));G(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 2*pi/3) ./cos(pi - H(idx)));B(idx) = 3*I(idx) - (R(idx) + G(idx));% BR sector.idx = find( (4*pi/3 <= H) & (H <= 2*pi));G(idx) = I(idx) .* (1 - S(idx));B(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 4*pi/3) ./cos(5*pi/3 - H(idx)));R(idx) = 3*I(idx) - (G(idx) + B(idx));% Combine all three results into an RGB image. Clip to [0, 1] to % compensate for floating-point arithmetic rounding effects. rgb = cat(3, R, G, B);rgb = max(min(rgb, 1), 0);直接在RGB空间进行图像增强clearclcA=imread( 'C:\Users\liuxinju\Desktop\maomao.jpg');%读入原始RGB图像whos;figure;imshow(A):title( 'original image' ); %显示图像[r c d]=size(A); %计算图像大小% ------ 计算红色分量并显示分解图-------- %red(:,:,1)=A(:,:,1);red(:,:,2)=zeros(r,c);red(:,:,3)=zeros(r,c); red=uint8(red*2.0);whos;figure;imshow(red)title( 'Red Component' );% ------ 计算绿色分量并显示分解图---------- %green(:,:,2)=A(:,:,2);green(:,:,1)=zeros(r,c);green(:,:,3)=zeros(r,c); green=uint8(green*2.0);figure;imshow(green)title( 'Green Component' );% -------- 计算蓝色分量并显示分解图---------- %blue(:,:,3)=A(:,:,3);blue(:,:,1)=zeros(r,c);blue(:,:,2)=zeros(r,c);blue=uint8(blue*2.0);figure;imshow(blue)title( 'Blue Component' );% ----------- 合成-------------- % B(:,:,1)=red(:,:,1);B(:,:,2)=green(:,:,2);B(:,:,3)=blue(:,:,3); figure;imshow(B):title( 'composition image' )。