收藏 分销(赏)

Robot Vision 机器人视觉 作业3.doc

上传人:pc****0 文档编号:6551298 上传时间:2024-12-13 格式:DOC 页数:7 大小:581.17KB 下载积分:10 金币
下载 相关 举报
Robot Vision 机器人视觉 作业3.doc_第1页
第1页 / 共7页
Robot Vision 机器人视觉 作业3.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
ROBOT VISION - Home Work #3 Date: 2012/9/15 Due:2012/9/24 一、 Wavelet影像处理 - 以peppers.png为处理对象。 1. 利用matlab的现成指令将此图进行one level 与two levels 的小波变换,并将对应的小波系数整合成下面的方式呈现。 注意:two levels时第二层的系数cA2, cH2, cV2, cD2堆叠要先形成cA1(对应于one level时的cA1),叠起后的大小可能大cH1,cV1,cD1(因为pixels/2近似造成),要先将cA1的大小调回cH1的大小,再形成最后的图像矩阵。 One Level Two Levels 2. 针对one level的小波变换系数,请拿掉最高频的cD1系数(即以零矩阵取代),透过inverse小波变换形成新的图像,试问与原图间的PSNR差多少? 答:Matlab代码如下所示: %%%%%%%%%%%%%%% 第一小题 %%%%%%%%%%%%%%% % 清空所有数据,图表,并且清屏 clear all; close all; clc; % 读取图像对应的矩阵并转化成灰度图 x0=imread('peppers.png'); x=rgb2gray(x0); nbcol=255; % 进行一阶小波变换 [cA1,cH1,cV1,cD1]=dwt2(x,'db1'); % 对小波变换的结果进行伪彩色编码 cod_x=wcodemat(x,nbcol); cod_cA1=wcodemat(cA1,nbcol); cod_cH1=wcodemat(cH1,nbcol); cod_cV1=wcodemat(cV1,nbcol); cod_cD1=wcodemat(cD1,nbcol); % 小波变换生成的四个图像结合成一个大图像 dec2d=[cod_cA1 cod_cH1;cod_cV1 cod_cD1 ]; % 显示一阶小波变换的结果 figure colormap(gray); imagesc(dec2d);title('Single-level Wavelet'); % 进行二阶小波变换,并且从中提取出一阶和二阶A,H,V,D分量 [C,S]=wavedec2(x,2,'db1'); lv2_size=S(1,1)*S(1,2); lv1_size=S(3,1)*S(3,2); cA2=reshape(C(1:lv2_size),S(1,1),S(1,2)); cH2=reshape(C((1+lv2_size):2*lv2_size),S(1,1),S(1,2)); cV2=reshape(C((1+2*lv2_size):3*lv2_size),S(1,1),S(1,2)); cD2=reshape(C((1+3*lv2_size):4*lv2_size),S(1,1),S(1,2)); lv2_cH1=reshape(C((1+4*lv2_size):(lv1_size+4*lv2_size)),... S(3,1),S(3,2)); lv2_cV1=reshape(C((1+lv1_size+4*lv2_size):... (2*lv1_size+4*lv2_size)),S(3,1),S(3,2)); lv2_cD1=reshape(C((1+2*lv1_size+4*lv2_size):... (3*lv1_size+4*lv2_size)),S(3,1),S(3,2)); % 对小波变换的结果进行伪彩色编码 cod_cA2=wcodemat(cA2,nbcol); cod_cH2=wcodemat(cH2,nbcol); cod_cV2=wcodemat(cV2,nbcol); cod_cD2=wcodemat(cD2,nbcol); cod_lv2_cH1=wcodemat(lv2_cH1,nbcol); cod_lv2_cV1=wcodemat(lv2_cV1,nbcol); cod_lv2_cD1=wcodemat(lv2_cD1,nbcol); % 小波变换生成的图像分量结合成一个大图像 dec2d_2=[[cod_cA2,cod_cH2;cod_cV2,cod_cD2],cod_lv2_cH1;... cod_lv2_cV1,cod_lv2_cD1]; % 显示一阶小波变换的结果 figure colormap(gray); imagesc(dec2d_2);title('2-level Wavelet'); %%%%%%%%%%%%%%% 第二小题 %%%%%%%%%%%%%%% % 消掉高频分量并进行逆小波变换 [M,N]=size(cD1); y=idwt2(cA1,cH1,cV1,zeros(M,N),'db1'); % 画出逆小波变换后的结果 figure; colormap(gray); imagesc(y);title('Inverse Wavelet'); % 计算信噪比(调用了老师写的psnr.m函数) xy_psnr=psnr(x,y); disp(['The psnr between image x and y is ' num2str(xy_psnr)]); %%%%%%%%%%%%%%%%%%%% Function: psnr.m %%%%%%%%%%%%%%%%%%%%%% %PSNR calculate the PSNR between two gray images. % PSNR = psnr(f1,f2) % f1, f2 are two input images function PSNR = psnr(f1, f2) bits=8; if numel(size(f1))>2 [m1,n1,s1]=size(f1); f1=rgb2gray(f1); else [m1,n1]=size(f1); end if numel(size(f2))>2 [m2,n2,s2]=size(f2); f2=rgb2gray(f2); else [m2,n2]=size(f2); end if m2~=m1 ||n2~=n1 error('Error!!!'); end L = 2.^bits - 1; a = L.^2; e = double(f1) - double(f2); MSE = sum(sum(e.^2)); PSNR = 10*log10(m1*n1*a/MSE); 画出的图像如下所示: 一阶小波变换结果: 二阶小波变换结果: 二、 Wooden cube影像处理分析 – 以Wooden Gripper 3.png为处理对象。 1. 尝试将不同的filter和threshold的上下界范围搭配,以凸显中间的cube。 2. 进一步,筛选上述cube的边界出来. 答:本文采用Gabor Filter,之后尝试不同的Threshold上下界范围。再确定上下界的过程中,先随机产生多对上下界,生成对应的图像,从中挑选出能够凸显中间Cube的上下界,将符合条件的上下界做平均化处理,得到最终上下界(147,241) Matlab代码如下所示: % 清空所有数据,图表,并且清屏 clear all; close all; clc; % 读取图像对应的矩阵并转化成灰度图 img0=imread('Wooden Gripper 3.png'); img=rgb2gray(img0); % 建立Gabor示波器模型 phi=pi/2; theta=2; sigma=0.65*theta; filterSize=6; G=zeros(filterSize); for i=(0:filterSize-1)/filterSize for j=(0:filterSize-1)/filterSize xprime=j*cos(phi); yprime=i*sin(phi); K=exp(2*pi*theta*sqrt(-1)*(xprime+yprime)); G(round((i+1)*filterSize),round((j+1)*filterSize))=... exp(-(i^2+j^2)/(sigma^2))*K; end end % 显示经过滤波之后的图像 J=uint8(abs(conv2(double(img),G))); figure;imshow(J); % % 随机产生Threshold上下界,多次执行, % 选取出能凸显中间的cube的多组上下界, % 在进行平均处理,得到一对上下界(147,241) % sum=0; for i=randi([100,200],1,3) for j=randi([150,255],1,3) if j<=i continue; end sum=sum+1; K=threshold(J,i,j); subplot(3,3,sum);imshow(255*K);title(num2str([i,j])); end end % 显示经过Threshold处理之后的图像 K=threshold(J,147,241); figure;imshow(255*K); %%%%%%%%%%%%%%%% Function:threshold.m %%%%%%%%%%%%%%%%%%% function out=threshold(in,lobo,upbo) a1=real(in)>=lobo; a2=real(in)<=upbo; out=and(a1,a2); end 生成的图像如下所示: 经过Gabor Filter处理后的图像: 再经过Threshold(147,241)之后的图像:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服