ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:18.57KB ,
资源ID:5048369      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5048369.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(彩色图转灰度图matlab实现代码.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

彩色图转灰度图matlab实现代码.docx

1、彩色图转灰度图matlab实现代码(一):彩色图像转灰度图1、 设计任务1) 读入彩色和灰度图像并显示;2) 对彩色图像转化为灰度图像并显示;3) 比较两种方法的效果。2、 设计目的1) 掌握彩色图转灰度图的基本原理与方法;2) 初步掌握MATLAB的使用方法;3) 了解MATLAB在数字信号处理,尤其是图像处理中显现出来的优势。3、 源代码% 把RGB格式的图片转换为YUV格式。clear; clc;x=imread(lena512.BMP);line,row,dim=size(x);x1=double(x); % 数据类型转换subplot(1,3,1) % 分割当前绘图窗口为(1,3)的

2、区域,显示此图片与1号区域imshow(uint8(x) % 数据类型转换,并且显示当前图片title(原图);% 矩阵乘,根据【RGB】转【YUV】关系转灰度图Y1=0.299*x(:,:,1)+0.587*x(:,:,2)+0.114*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(求均值

3、转换后图片); 图片无法显示哈。图(1)彩色转灰度图程序运行结果4、 结果分析由运行结果可以看出,根据RGB到YUV各个分量关系转换得到的灰度图比较真实,而用简单的求RGB各个分量的均值转弧度图,其结果很不理想,图片基本看不清楚原来的轮廓。(二):对灰度图像实现按比例缩小和放大1、 设计任务1) 对灰度图实现在行上k1=0.6,列上k2=0.75的按比例缩小;2) 对灰度图实现在行上k1=1.2,列上k2=1.5的按比例放大;2、 设计目的1) 掌握图像的放大和缩小原理;2) 用MATLAB实现图像的按比例放大和缩小;3) 明白图像的放大和缩小并不是简单的互为逆过程。3、 源代码(1) 图像按

4、比例缩小源代码% 图像按比例缩小clear; clc;X=imread(house.BMP); % 读取图片line,row=size(X);x=double(X);subplot(1,2,1)imshow(uint8(x)title(原图);%图片缩小k1=0.6;k2=0.75; % k1,k2分别表示在行和列上缩小的倍数l_f=1:line;r_f=1:row;m=round(line*k1);n=round(row*k2); % (m,n)表示缩小后的图片的大小G=zeros(m,n); % 初始化缩小后图像矩阵for l_n=1:m; for r_n=1:n; l_f=round(l

5、_n./k1); r_f=round(r_n./k2); if l_f=256; G(l_n,r_n)=x(256,r_f); % 当l_n=154时,l_f256,越界处理, % 而当r_n=192时,r_f=256,恰好为边界值,不产生越界。 else G(l_n,r_n)=x(l_f,r_f); %缩小后图片赋值 end endendsubplot(1,2,2)imshow(uint8(G)title(缩小后的图片);图(2)图片缩小程序运行结果 (2)图片按比例放大源代码% 图像按比例放大clearclcX=imread(splash.BMP);line,row=size(X);x=d

6、ouble(X);figure(1) % 绘图窗口1imshow(uint8(x)title(原图);%图片放大k1=1.2;k2=1.5; % k1,k2分别表示在行和列上放大的倍数l_f=1:line;r_f=1:row;m=round(line*k1);n=round(row*k2); % (m,n)表示放大后的图片的大小G=zeros(m,n); % 初始化放大后图像矩阵for l_n=1:m; for r_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); % 放大后图片赋值 endendfigu

7、re(2) % 绘图窗口2imshow(uint8(G)title(放大后的图片); 图(31)图片放大程序运行结果 图(32)图片放大程序运行结果4、 结果分析图片缩小后,由于在行和列上分别用了不同的缩小比例,所以缩小后的图片在行列上的像素个数与原图片不同,原图片house.BMP大小为256*256,而缩小后的图片大小为154*192。在缩小过程中,图片像素点下标出现了越界现象,处理方法是,将离它最近的像素点赋值给相应位置;图(31)为原图片,图(32)为放大后的图片。因为在行和列上有了不同的放大倍数,原图片splash.BMP大小为512*512,放大后的图片大小为614*768。(三)

8、:对灰度图像进行直方图均衡化处理1、设计任务1) 对弧度图像进行直方图均衡化处理;2) 明白灰度均衡的原理和方法。2、设计目的1) 掌握直方图均衡原理;2) 自己编写程序,实现灰度图的直方图均衡。3、源代码 % 直方图灰度均衡clear; clc;X=imread(pattern.BMP); % 读图x=double(X); % 改变数据类型figure(1) % 第一个图形窗口subplot(2,2,1) % 分割图形窗口imshow(uint8(x) % 显示图片title(原图); % 给图片标题subplot(2,2,2)imhist(uint8(x) % 原图的灰度图title(原图

9、的灰度直方图);% 灰度均衡程序段line,row=size(X); % 计算图像大小Nf=line*row; % 计算图片像素总数pf=0:255; % 灰度级分布范围l=length(pf); % 灰度级长度% 求各个灰度级的概率分布hf=zeros(1,l); % hf为原图的各灰度级概率hp=zeros(1,l); % hp为计算出的新的各灰度级概率pn=zeros(1,l); % pn为新的灰度级范围for a=(1:l); % 灰度级个数 x(find(x=pf(a); % 找出灰度级为pf(a)的像素点 N(a)=length(x(find(x=pf(a); % 找出各个灰度值的

10、总数 hf(a)=N(a)./Nf; % 计算第i个灰度值的概率end% 计算新的各个灰度值的概率分布% 计算新的灰度值for a=(1:l); if a=1; hp(a)=hf(a); % 当a=1时,即第一个灰度级的概率 % 均衡后的图和原图的该灰度级概率相同 else hp(a)=hf(a)+hp(a-1); % 当a1时,从第二个灰度级起 %均衡后图片当前灰度级的概率为原图当前灰度级与之前概率之和。 pn=round(hp*255); % pn 为均衡后的新图片的灰度值(round 舍入取整) endend% 图像恢复g=zeros(line,row); % 新图像矩阵初始化for m

11、=1:line; for n=1:row; % (m,n)为图像的大小 for a=1:l;if x(m,n)=pf(a); % 扫描原图,(m,n)点的灰度值等于灰度级表中的pf(a)值,% 取出a值 g(m,n)=pn(a); % 把对应在新的灰度级表中的a位置的值赋值给新的图像 end end endend subplot(2,2,3)imshow(uint8(g)title(灰度均衡后的图片);subplot(2,2,4)imhist(uint8(g)title(均衡后的灰度直方图)图(41)灰度均衡程序运行结果图(42)灰度均衡程序运行结果4、结果分析 直方图均衡的目的就是把原图中,

12、比较集中的灰度级分布到整个灰度级范围内,使得图片的黑白分明,显示出更多的细节来。 由图(42)后面的灰度直方图可以看出,原来比较集中的灰度级,现在比较宽,比较均匀的分布在了整个灰度范围内。灰度均衡后的图片给人的感觉比原来的图片更清晰,更多的显示出了其细节。(四)对灰度图像进行滤波处理1、设计任务1) 对灰度图像完成均值滤波;2) 对灰度图像完成中值滤波;3) 要求滤波器魔波尺寸分别取3*3和5*5.2、设计目的1) 掌握图像滤波原理;2) 用MATLAB编程实现对图像的均值滤波和中值滤波;3) 分析滤波器模板尺寸不同对滤波效果的影响。3、源代码(1)均值滤波源代码% 均值滤波程序clear;c

13、lc;X=imread(lena256noisegau.BMP);line,row=size(X);x=double(X);subplot(1,2,1)imshow(uint8(x)title(未滤波前图片);% 滤波器主程序段s=input(please input the size of templet s=);H=(1/s2)*ones(s);G=zeros(line,row); % 滤波后图片矩阵初始化l_x=1:line;r_x=1:row; % 图片行列下标范围x_s=zeros(s); % 原图片中像素点取样矩阵初始化 for p=1:(line-s+1); for q=1:(r

14、ow-s+1); % p,q 为行列下标变量 for u=1:s; for v=1:s; x_s(u,v)=x(p+u-1,q+v-1); % 从原图片中提取滤波块 end end I=H.*x_s; % 与滤波器模块相乘 for u=1:s; for v=1:s; G(p+(s-1)/2,q+(s-1)/2)=round(G(p+(s-1)/2,q+(s-1)/2)+I(u,v); % 给滤波后的图像矩阵赋值 end end endend% 边界特殊点取值,一般把原图像的点复制过来,不影响视觉效果for l_x=1:(s-1)/2; G(l_x,:)=x(l_x,:);endfor l_x=

15、(line-(s-3)/2):line; G(l_x,:)=x(l_x,:);endfor r_x=1:(s-1)/2; G(:,r_x)=x(:,r_x);endfor r_x=(row-(s-3)/2):row; G(:,r_x)=x(:,r_x);end% 图片显示subplot(1,2,2)imshow(uint8(G)title(滤波后的图片);图(51)均值滤波程序运行结果(s=3)图(52)均值滤波程序运行结果(s=5)4.1、 结果分析 均值滤波的基本原理就是把跟滤波器模块大小相等的像素模块与滤波器模块相乘,将结果的各个像素点的均值赋值给模块中间的或者确定好的像素点;滤波器模块

16、滑动扫边整个图像,就达到了滤波的目的。边界值不能进行滤波处理,可直接从原图像中复制过来,并不影响滤波的视觉效果。图(51)是滤波器模块大小为3*3的时候的滤波结果,感觉比较清晰,但是滤波效果不怎么好,噪声点还能明显的看到;图(52)是滤波器模块大小为5*5的时候的滤波结果,感觉图像没有原来的清晰,但是噪声点却不那么明显了。(2)中值滤波源代码 % 中值滤波器clear;clc;X=imread(lena256noisesalt.BMP);line,row=size(X);x=double(X);subplot(1,2,1)imshow(uint8(x)title(未滤波前图片);% 滤波器主程

17、序段s=input(please input the size of templet s=);G=zeros(line,row); % 滤波后图片矩阵初始化l_x=1:line;r_x=1:row; % 图片行列下标范围x_s=zeros(s); % 原图片中像素点取样矩阵初始化b=zeros(1,s2); % 初始化行向量c=zeros(1,s2); % 中间变量向量for p=1:(line-s+1); for q=1:(row-s+1); % p,q 为行列下标变量 for u=1:s; for v=1:s; x_s(u,v)=x(p+u-1,q+v-1); % 从原图片中提取滤波块 e

18、nd end% 把提取出的像素值排成一行 k=1; for u=1:s; for v=1:s; b(k)=x_s(u,v); % 把像素值赋值给行向量 k=k+1; end end % 把行向量b中的值按从小到大的顺序排列Nf=s2; for n=1:Nf2; for m=1:(Nf-1); if b(m)b(m+1); c(m)=b(m+1); b(m+1)=b(m); b(m)=c(m); else b(m)=b(m); b(m+1)=b(m+1); end end end % 给滤波后图像矩阵赋值 for u=1:s; for v=1:s; G(p+(s-1)/2,q+(s-1)/2)=

19、b(Nf-1)/2); % 给滤波后的图像矩阵赋值 end end endend% 边界特殊点取值,一般把原图像的点复制过来,不影响视觉效果for l_x=1:(s-1)/2; G(l_x,:)=x(l_x,:);endfor l_x=(line-(s-3)/2):line; G(l_x,:)=x(l_x,:);endfor r_x=1:(s-1)/2; G(:,r_x)=x(:,r_x);endfor r_x=(row-(s-3)/2):row; G(:,r_x)=x(:,r_x);end% 图片显示subplot(1,2,2)imshow(uint8(G)title(滤波后的图片);图(5-3)中值滤波程序运行结果(s=3)图(5-4)中值滤波程序运行结果(s=5)4.2、 结果分析中值滤波基本原理就是把滤波器与模块大小相同的原图像像素块中的各个像素值按从小到大的顺序排列起来,然后取中间的一个值赋值给确定的像素点,一般是像素块中间的一个值;图(5-3)为滤波器模块取3*3大小时的滤波效果,已经明显去除了图像中的噪声,并且图像也比较清晰;图(5-4)为滤波器模块取5*5大小时的滤波效果,虽然明显去除了噪声,但是,图像比较模糊。中值滤波也存在边界值不能进行滤波的问题,一般将原图片的像素值赋值到新图中,不影响视觉效果.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1