蒃(一):彩***像转灰度图羀 莇1、设计任务膆1) 读入彩色和灰度图像并显示;薂2) 对彩***像转化为灰度图像并显示;荿3) 比较两种方法的效果。肇2、设计目的羃1) 掌握彩***转灰度图的基本原理与方法;羄2) 初步掌握MATLAB的使用方法;衿3) 了解MATLAB在数字信号处理,尤其是图像处理中显现出来的优势。袈3、源代码肅%把RGB格式的图片转换为YUV格式。肂clear;clc;芈x=imread('');薈[line,row,dim]=size(x);肆x1=double(x); %数据类型转换膁subplot(1,3,1) %分割当前绘图窗口为(1,3)的区域,显示此图片与1号区域羁imshow(uint8(x))%数据类型转换,并且显示当前图片莈title('原图');袄%矩阵乘,根据【RGB】转【YUV】关系转灰度图薃Y1=*x(:,:,1)+*x(:,:,2)+*x(:,:,3);莁y1=[round(Y1)];%取整聿subplot(1,3,2)羅imshow(uint8(y1))蚁title('根据各分量转换关系转换后图片');螀%求RGB各个分量均值转灰度图薅Y2=(x(:,:,1)+x(:,:,2)+x(:,:,3))/3;羆y2=[round(Y2)];肄subplot(1,3,3)艿imshow(uint8(y2))芅title('求均值转换后图片');螄 图片无法显示哈。膂 虿图(1)彩色转灰度图程序运行结果肆4、结果分析袅由运行结果可以看出,根据RGB到YUV各个分量关系转换得到的灰度图比较真实,而用简单的求RGB各个分量的均值转弧度图,其结果很不理想,图片基本看不清楚原来的轮廓。芀 肈(二):对灰度图像实现按比例缩小和放大螆 袆1、设计任务蚃1) 对灰度图实现在行上k1=,列上k2=;薈2) 对灰度图实现在行上k1=,列上k2=;蒇2、设计目的蚄1) 掌握图像的放大和缩小原理;螁2) 用MATLAB实现图像的按比例放大和缩小;膁3) 明白图像的放大和缩小并不是简单的互为逆过程。芇3、源代码螅(1) 图像按比例缩小源代码肄%图像按比例缩小蚀clear;clc;羇X=imread('');%读取图片薃[line,row]=size(X);节x=double(X);肀subplot(1,2,1)螈imshow(uint8(x))蚄title('原图');莀%图片缩小葿k1=;蒈k2=; %k1,k2分别表示在行和列上缩小的倍数蚅l_f=1:line;蚃r_f=1:row;羈m=round(line*k1);芈n=round(row*k2);%(m,n)表示缩小后的图片的大小蒃G=zeros(m,n); %初始化缩小后图像矩阵螁forl_n=1:m;莈 forr_n=1:n; 罿 l_f=round(l_n./k1);薄 r_f=round(r_n./k2);膄 ifl_f>=256; 肁 G(l_n,r_n)=x(256,r_f);%当l_n=154时,l_f>256,越界处理,蒅 %而当r_n=192时,r_f=256,恰好为边界值,不产生越界。薅 else节 G(l_n,r_n)=x(l_f,r_f);%缩小后图片赋值蒁 end膆 end莃end莀subplot(1,2,2)袀imshow(uint8(G))羆title('缩小后的图片');蒄 芅图(2)图片缩小程序运行结果螁 (2)图片按比例放大源代码膈%图像按比例放大羇clear莃clc芁X=imread('');衿[line,row]=size(X);螅x=double(X);螅figure(1) %绘图窗口1蚀imshow(uint8(x))虿title('原图');袆%图片放大袄k1=;莃k2=; %k1,k2分别表示在行和列上放大的倍数荿l_f=1:line;袈r_f=1:row;羂m=round(line*k1);螃n=round(row*k2);%(m,n)表示放大后的图片的大小膀G=zeros(m,n); %初始化放大后图像矩阵蚅forl_n=1:m;莄 forr_n=1:n; 膂 l_f=round(l_n./k1);袀 r_f=round(r_n./k2);螆 G(l_n,r_n)=x(l_f,r_f);%放大后图片赋值 蒃
彩色图转灰度图matlab实现代码 来自淘豆网www.taodocs.com转载请标明出处.