数字图像处理实验报告_数字图像处理实例集锦

其他范文 时间:2020-02-28 11:50:37 收藏本文下载本文
【www.daodoc.com - 其他范文】

数字图像处理实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数字图像处理实例集锦”。

实验一 数字图像的获取

一、实验目的1、了解图像的实际获取过程。

2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。

3、熟练掌握图像读、写、显示、类型转换等 matlab 函数的用法。

二、实验内容

1、读取一幅彩色图像,将该彩色图像转化为灰度图像,再将灰度图像转化为索引图像并显示所有图像。

2、编程实现空间分辨率变化的效果。

三、实验原理

1、图像读、写、显示 I=imread(‘image.jpg’)Imview(I)Imshow(I)Imwrite(I,’wodeimage.jpg’)

2、图像类型转换

I=mat2gray(A,[amin,amax]);按指定的取值区间[amin,amax]将数据矩阵 A 转化为灰度

图像 I,amin 对应灰度 0,amax 对应 1,也可以不指定该区间。

[x,map]=gray2ind(I,n);按指定的灰度级 n 将灰度图像转化为索引图像,n 默认为 64 I=ind2gray(x,map);索引图像转化为灰度图像 I=grb2gray(RGB);真彩色图像转化为灰度图像

[x,map]=rgb2ind(RGB);真彩色图像转化为索引图像 RGB=ind2rgb(x,map);索引图像转化为真彩色图像

BW=im2bw(I,level);将灰度图像转化为二值图像,level 取值在[0,1]之间

BW=im2bw(x,map,level);将索引图像转化为二值图像,level 取值在[0,1]之间 BW=im2bw(RGB,level);将真彩色图像转化为二值图像,level 取值在[0,1]之间

四、实验代码及结果

1、in=imread('peppers.png');i=rgb2gray(in);[x,map]=gray2ind(i,128);subplot(131),imshow(in)subplot(132),imshow(i)subplot(133),imshow(x),colormap(map)、%空间分辨率变化的效果

clc,close all,clear i=imread('cameraman.tif');

i=imresize(i,[256,256]);i1=i(1:2:end,1:2:end);[m1,n1]=size(i)i2=i1(1:2:end,1:2:end);[m2,n2]=size(i2)i3=i2(1:2:end,1:2:end);[m3,n3]=size(i3)subplot(221),imshow(i),xlabel('256 x 256')subplot(222),imshow(i1),xlabel('128 x 128')subplot(223),imshow(i2),xlabel('64 x 64')subplot(224),imshow(i3),xlabel('32 x 32')256 x 25664 x 64128 x 12832 x 32

实验二

图像的几何变换

一、实验目的掌握图像的基本几何变换的方法

1、图像的平移

2、图像的旋转

二、实验内容

练习用matalb命令实现图像的平移、旋转操作

1、.编写实现图像平移的函数

2、用imread命令从你的硬盘读取一幅256×256灰度图;

3、调用平移函数,将256×256灰度图平移100行200列,在同一个窗口中显示平移前和平移后的图像。

4、再开辟一个窗口,分别用最近邻插值法、双线性插值法实现图像顺势针旋转50°,显示在同一窗口中,并比较两种效果图(在报告中)

三、实验原理

提示:图片平移就是实现运算

x'10x0x ' y01y0y10011 

x'xx0即:y'yy0

四、实验代码及结果

1、function [I]=hmove(i,x0,y0);%编写实现图像平移的函数hmove,平移量为 [r,c]=size(i);

%x0,y0,平移前图像矩阵为i,I(r+x0,c+y0)=0;

%平移后图像矩阵为I for x=1:r;

for y=1:c;

x1=x+x0;

y1=y+y0;

I(x1,y1)=i(x,y);

end;end;参考程序 subplot(2,2,1)imshow(RGB)subplot(2,2,3)gray1=rgb2gray(RGB);imagesc(gray1),colormap(gray);

subplot(2,2,2)I1=hmove(gray1,100,20);subimage(gray1),axis('image');subplot(2,2,4),imagesc(I1),colormap(gray),axis([1,700],[1,820]);

2、显示图像的傅立叶频谱  a=0:800;b=0:600;

 %[x,y]=meshgrid([-20:0.2:20],[-20:0.2:20]); [x,y]=meshgrid(a,b); i=imread('hr.jpg'); I=rgb2gray(i);

 subplot(1,2,1),subimage([0,800],[0,600],i); subplot(1,2,2); s=fft2(I,601,801); mesh(x,y,log(abs(s)));%图像的傅立叶幅度频谱以三维图形显示  colormap(hsv);

实验三 图像空域变换增强(1)

一、实验目的1、掌握直方图均衡化算法。

2、巩固灰度变换、直方图修正、图像算术和逻辑运算等基础知识。

3、熟练掌握空域变换增强的matlab 相关函数用法,并能利用算法自己编写matlab 程序实现图像空域变换增强。

二、实验内容

1、用函数imcomplement 对灰度图像cameraman.tif 取反。

2、利用如下分段变换曲线对canmeraman.tif 做线性灰度变换。

3、利用直方图求取算法计算以及显示pout.tif 的直方图,并和imhist 函数生成的直方图作比较。

三、实验原理

在图像处理中,空域是指由像素组成的空间,空域增强方法是指直接作用于像素的增强方法。空域处理可以表示为:

g(x, y)=T[ f(x, y)]

j=imcomplement(i);对图像取反 imhist();显示图像的直方图 histeq();直方图均衡化函数

imnoise(I,type,parameters);给图像加噪声 bitand();图像位与运算 bitor();图像位或运算

四、实验代码与结果

1、i=imread('cameraman.tif');

j=imcomplement(i);subplot(121),imshow(i)subplot(122),imshow(j)

2、clear,close all,clc in1=imread('cameraman.tif');

f0=0;g0=0;f1=100;g1=60;f2=150;g2=220;f3=255;g3=255;figure,plot([f0,f1,f2,f3],[g0,g1,g2,g3])axis tight,xlabel('f'),ylabel('g')title('intensity transformation')r1=(g1-g0)/(f1-f0);b1=g0-r1*f0;r2=(g2-g1)/(f2-f1);b2=g1-r2*f1;r3=(g3-g2)/(f3-f2);b3=g2-r3*f2;[m,n]=size(in1);in2=double(in1);for i=1:m for j=1:n f=in2(i,j);g(i,j)=0;if(f>=0)&(f=f1)&(f=f2)&(f

3、clc,clear,close all in=imread('pout.tif');[m,n]=size(in);num=zeros(1,256);% num 是每个灰度级对应的像素个数 p=zeros(1,256);% p 是每个灰度级出现的概率 for i=1:m for j=1:n num(1,in(i,j)+1)=num(1,in(i,j)+1)+1;% 统计个数 end end p=num./(m*n)% 求概率 x=1:256;subplot(121),plot(x,p),axis([1 256 0 0.06])subplot(122),imhist(in)

实验四 图像空域变换增强(2)

一、实验目的1、掌握直方图均衡化算法。

2、巩固灰度变换、直方图修正、图像算术和逻辑运算等基础知识。

3、熟练掌握空域变换增强的matlab 相关函数用法,并能利用算法自己编写matlab 程序实现图像空域变换增强。实现频域线性变换,非线性变换增强

二、实验内容

1、利用直方图均衡化算法对图像pout.tif 进行增强运算。

2、对图像lena.jpg 作逻辑与和逻辑或运算。

三、实验原理

j=imcomplement(i);对图像取反 imhist();显示图像的直方图 histeq();直方图均衡化函数

imnoise(I,type,parameters);给图像加噪声 bitand();图像位与运算 bitor();图像位或运算

四、实验代码与结果

1、clear;close all;clc;tu=imread('pout.tif');% 输入图像

%tu=rgb2gray(tu);% 转换为灰度图像

N=zeros(1,256);% N 为原始图像各灰度级像素个数 P=zeros(1,256);% P 为原始成图像直方图

q=zeros(1,256);% q 为原始图像直方图累积分布函数

newN=zeros(1,256);% newN 为新生成图像各灰度级像素个数 newP=zeros(1,256);% newP 为新生成图像直方图

newq=zeros(1,256);% newq 为新生成图像直方图累积分布函数 [h w]=size(tu);new_tu=zeros(h,w);% 计算原始图像各灰度级像素个数 for x=1:h for y=1:w N(1,tu(x,y))=N(1,tu(x,y))+1;end end P=N./sum(N);% 计算原始直方图 P % 计算原始累积分布直方图 q(1,1)=P(1,1);for i=2:256 q(1,i)=q(1,i-1)+P(1,i);end % 计算原始直方图对应的新的灰度 t ,建立映射关系 for i=1:256 t(1,i)=floor(254*q(1,i)+1+0.5);end % 计算直方图均衡化后的新图 new_tu for x=1:h for y=1:w new_tu(x,y)=t(1,tu(x,y));end end % 统计新生成图像各灰度级像素个数 for x=1:h for y=1:w newN(1,new_tu(x,y))=newN(1,new_tu(x,y))+1;end end newP=newN./(h*w);% 计算新的灰度直方图 newP % 计算新生成图像累积分布直方图 newq(1,1)=newP(1,1);for i=2:256 newq(1,i)=newq(1,i-1)+newP(1,i);end % 显示信息

subplot(231),imshow(tu)subplot(232),plot(P),axis([1 256 0 0.06])subplot(233),plot(q),axis([1 256 0 1])subplot(234),imshow(new_tu,[])subplot(235),plot(newP),axis([1 256 0 0.06])subplot(236),plot(newq),axis([1 256 0

1])

2、clc,clear,close all in=imread('lena.jpg');in=rgb2gray(in);[m,n]=size(in);in=double(in);out1=ones(m,n)*255;out1(20:150,30:170)=0;chu1=zeros(m,n);chu1(20:150,30:170)=255;for i=1:m for j=1:n out2(i,j)=bitor(in(i,j),out1(i,j));chu2(i,j)=bitand(in(i,j),chu1(i,j));end end in=uint8(in);out1=uint8(out1);out2=uint8(out2);chu1=uint8(chu1);chu2=uint8(chu2);subplot(231),imshow(in)subplot(232),imshow(out1)subplot(233),imshow(out2)subplot(234),imshow(chu1)subplot(235),imshow(chu2)

实验五 图像滤波增强

一、实验目的1、掌握各种空域和频域图像滤波增强算法已经模板运算的基本方法。

2、巩固卷积定理、滤波处理等基础知识。

3、熟练掌握空域和频域滤波增强的matlab 相关函数用法。

二、实验内容

1、利用均值滤波算法对已被噪声污染的图像rice.png 进行滤波除噪处理。

2、利用标准中值滤波算法对已被噪声污染的图像rice.png 进行滤波除噪处理。3、用prewitt 算子对图像cameraman.tif 进行锐化滤波处理。

三、实验原理

H=fspecial(type);H=fspecial(type,parameters);用于创建一个指定的滤波器模板,type 指滤波器的类型。

parameters 是与指定的滤波器有关的参数。Y=filter2(B,X);用于进行二维线性数字滤波,使用矩阵B 中的二维滤波器对数据X进行滤波。结果Y 是通过二维互相关计算出来的,大小与X 一样。

Y=filter2(B,X,’shape’);结果Y 的大小由参数shape确定,shape的取值如下: Full:返回二维户相关的全部结果,size(Y)>size(X)Same:返回二维户相关结果的中间部分,Y 的大小与X 相同 Valid:返回二维户相关未使用边缘补0 的部分,size(Y)

四、实验代码与结果

1、clc,clear

in1=imread('rice.png');f=imnoise(in1,'salt & pepper',0.1);%f=imnoise(in1,'gauian',0,0.02)%g 是标准均值滤波器的输出图像 g=biaozhunjunzhi(f,3);subplot(221),imshow(in1)%,xlabel('(a)原始图像')subplot(222),imshow(f)%,xlabel('(b)加噪图像')subplot(223),imshow(g)%,xlabel('(c)标准均值滤波图像')function g=biaozhunjunzhi(f,k)[m,n]=size(f);%f1 是对边缘像素补0 后得到的图像

f1=zeros(m+(k-1),n+(k-1));[m1,n1]=size(f1);%f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f;%注意这条指令绝对不能少 ga=f;%取出窗口内的像素值并作标准均值滤波处理 for i=(k+1)/2:(m1-(k-1)/2)

for j=(k+1)/2:(n1-(k-1)/2)a=0;x=1;for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2));x=x+1;end end %hsum 表示窗口内所有像素值的和 hsum=0;for h=1:(k^2)hsum=hsum+a(h);end ga(i,j)=round(hsum/(k^2));end end %ga 的大小和f1 的大小一致所以必须取出中间部分像素值作为输出 g=ga((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2));

2、clc,clear in1=imread('rice.png');f=imnoise(in1,'salt & pepper',0.1);%f=imnoise(in1,'gauian',0,0.02)%g 是标准中值滤波器的输出图像 g=biaozhunzhongzhi(f,3);subplot(131),imshow(in1)%,xlabel('(a)原始图像')subplot(132),imshow(f)%,xlabel('(b)加噪图像')subplot(133),imshow(g)%,xlabel('(c)标准均值滤波图像')function g=biaozhunzhongzhi(f,k)[m,n]=size(f);%f1 是对边缘像素补0 后得到的图像

f1=zeros(m+(k-1),n+(k-1));[m1,n1]=size(f1);%f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f;%注意这条指令绝对不能少 ga=f;for i=(k+1)/2:(m1-(k-1)/2)for j=(k+1)/2:(n1-(k-1)/2)a=0;x=1;for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2));x=x+1;

end end a=sort(a);ga(i,j)=a((k^2+1)/2);end end %ga 的大小和f1 的大小一致所以必须取出中间部分像素值作为输出 g=ga((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2));

3、clc,clear,close all f=imread('cameraman.tif');[m,n]=size(f);g=f;h1=[-1-1-1;0 0 0;1 1 1];h2=[-1 0 1;-1 0 1;-1 0 1];x1=h1;x2=h2;for i=2:1:m-1 for j=2:1:n-1 sum1=0;sum2=0;sum=0;for p=1:1:3 for q=1:1:3 x1(p,q)=f(i+(p-2),j+(q-2));x2(p,q)=f(i+(p-2),j+(q-2));sum1=sum1+x1(p,q)*h1(p,q);sum2=sum2+x2(p,q)*h2(p,q);sum=sum1+sum2;end end if sum

实验六 图像复原

一、实验目的1、掌握各种空域和频域图像滤波增强算法已经模板运算的基本方法。

2、巩固卷积定理、滤波处理等基础知识。

3、熟练掌握空域和频域滤波增强的matlab 相关函数用法并能利用算法自己编写matlab程序实现图像空域变换增强。

二、实验内容利用大气湍流引起的图像退化模型对camerman.tif 进行退化和复原仿真,采用逆滤波的方法复原。利用匀速直线运动的图像退化模型对camerman.tif 进行退化和复原仿真,采用逆滤波的方法复原。根据逆谐波均值滤波器的输入输出方程对输入图像camerman.tif 进行空域滤波还原处理。

三、实验原理

Psf=fspecial(type,parameters);返回指定滤波器的单位冲击响应 Imfilter(c,psf,’circular’,’conv’);根据psf 对图像进行滤波处理 Fr=deconvwnr(g,psf,ncorr,icorr);对图像进行维纳滤波处理

Fr=deconvreg(g,psf,noisepower,range);对图像进行最小二乘方滤波处理

Tform=maketform(transform_type,transform_parameters);对图像进行几何失真校正

四、实验代码与结果

1、%基于大气湍流造成的模糊图像及其还原

clear;close all;clc in=imread('cameraman.tif');subplot(131),imshow(in),title('原始图像')f=fft2(in);[N1,N2]=size(f);k1=0.00005;%退化模型中的常数

%根据退化模型对输入图像进行退化处理并输出退化后的图像 for i=1:N1 for j=1:N2 h(i,j)=exp((-k1*(i^2+j^2))^(5/6));out(i,j)=f(i,j)*h(i,j);end end out1=ifft2(out);outreal=uint8(real(out1));subplot(132),imshow(outreal),title('大气湍流退化图')%根据退化模型对已经退化的图像进行恢复处理 k2=0.00006;%退化模型中的常数

for i=1:N1 for j=1:N2 h(i,j)=exp((-k2*(i^2+j^2))^(5/6));chu(i,j)=out(i,j)/h(i,j);end end chu1=ifft2(chu);chureal=uint8(real(chu1));subplot(133),imshow(chureal),title('大气湍流还原图')

2、%基于匀速直线运动造成的模糊图像及其还原

clear;close all;clc in=imread('cameraman.tif');%in=rgb2gray(in1);subplot(131),imshow(in),title('原始图像')f=fft2(in);[N1,N2]=size(f);t=1;a=0.06;b=0.04;pi=3.1415926;for u=1:N1 for v=1:N2 fenzhi=cos(pi*(u*a+v*b))-i*sin(pi*(u*a+v*b));h(u,v)=t*sin(pi*(u*a+v*b))*fenzhi/(pi*(u*a+v*b));out(u,v)=f(u,v)*h(u,v);end end out1=ifft2(out);outreal=uint8(real(out1));subplot(132),imshow(outreal),title('匀速直线运动退化图')for u=1:N1 for v=1:N2 h(u,v)=t*sin(pi*(u*a+v*b))*(cos(pi*(u*a+v*b))-j*sin(pi*(u*a+v*b)))/(pi*(u*a+v*b));chu(u,v)=out(u,v)/h(u,v);end end chu1=ifft2(chu);chureal=uint8(real(chu1));

subplot(133),imshow(chureal),title('匀速直线运动还原图')

a=0.06;b=0;时的运行结果:

a=0;b=0.06;时的运行结果::

3、%逆谐波均值滤波举例

clc,close all,clear in=imread('cameraman.tif');f=imnoise(in,'gauian',0,0.05);g=nixiebojunzhi(f,3);subplot(131),imshow(in)subplot(132),imshow(f)subplot(133),imshow(g)%逆谐波函数

function g=nixiebojunzhi(f,k)[m,n]=size(f);r=2;%r 为逆谐波函数中的Q 值

%f1 是对边缘像素补0 后得到的图像

f1=zeros(m+(k-1),n+(k-1));[m1,n1]=size(f1);%f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f;%注意这条指令绝对不能少 ga=f;%取出窗口内的像素值并作标准均值滤波处理 for i=(k+1)/2:(m1-(k-1)/2)for j=(k+1)/2:(n1-(k-1)/2)a=0;x=1;for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2));x=x+1;end end %hsum 表示窗口内所有像素值的和 hsum1=0;hsum2=0;for h=1:(k^2)hsum1=hsum1+a(h)^(r+1);hsum2=hsum2+a(h)^r;end ga(i,j)=round(hsum1/hsum2);end end %ga 的大小和f1 的大小一致所以必须取出中间部分像素值作为输出 g=ga((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2));

实验七 彩色图像处理

一、实验目的1、了解三色成像及各种颜色模型。

2、能用处理灰度图像的算法和技术对真彩色图像进行增强、去噪、复原等处理。

3、理解伪彩色图像处理技术并掌握密度分层法、灰度级彩色变换法、频域滤波等伪彩色图像处理算法。

二、实验内容

1、生成一幅256x256 的RGB 图像,该图像左上角为红色,右上角为蓝色,左下角为绿色,右下角为黑色。

2、给彩色图像加噪并去噪,可以采用灰度图像去噪处理的任何方法。

3、密度分层伪彩色处理仿真。

4、灰度级-彩色变换法伪彩色处理仿真。

三、实验原理

B=cat(dim,A1,A2,A3,...),dim 为维数,cat 函数将A1,A2,A3 等矩阵连接成维数为dim的矩阵。

四、实验代码与结果

1、clc,clear,close all rin=zeros(256,256);%红色分量 rin(1:128,1:128)=1;%左上角 gin=zeros(256,256);%绿色分量 gin(129:256,1:128)=1;%左下角 bin=zeros(256,256);%蓝色分量 bin(1:128,129:256)=1;%右上角 %将三个分量进行组合 out1=cat(3,rin,gin,bin);%也可以不用matlab 函数

out2(:,:,1)=rin;out2(:,:,2)=gin;out2(:,:,3)=bin;subplot(121),imshow(out1)subplot(122),imshow(out2)

2、%给彩色图像加噪并去噪

clc,clear,close all in1=imread('peppers.png');in=imnoise(in1,'salt & pepper',0.8);out(:,:,1)=gaijinjunzhi(in(:,:,1),5);out(:,:,2)=gaijinjunzhi(in(:,:,2),5);out(:,:,3)=gaijinjunzhi(in(:,:,3),5);subplot(221),imshow(in1)subplot(222),imshow(in)subplot(223),imshow(out)%采用改进均值滤波算法,函数如下 function g=gaijinjunzhi(f,k)[m,n]=size(f);%f1 是对边缘像素补0 后得到的图像

f1=zeros(m+(k-1),n+(k-1));[m1,n1]=size(f1);%f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f;%注意这条指令绝对不能少 ga=f;%取出窗口内的像素值并作改进均值滤波处理 for i=(k+1)/2:(m1-(k-1)/2)for j=(k+1)/2:(n1-(k-1)/2)a=0;x=1;for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2));x=x+1;end end mina=min(a);maxa=max(a);%tan 表示窗口内既不是最大也不是最小像素值的个数 %he 表示窗口内所有既不是最大也不是最小像素值的和 tan=0;he=0;%hsum 表示窗口内所有像素值的和 hsum=0;%取出不是最大也不是最小的像素值并求和以及个数 for h=1:(k^2)hsum=hsum+a(h);if a(h)~=mina & a(h)~=maxa tan=tan+1;he=he+a(h);else end end %在噪声密度较大的情况下有可能窗口内所有的值都是最大值或最小值 %对其进行判断,如果是这种情况,就采用普通的均值滤波算法求当前要求的像素点的值 if tan~=0 ga(i,j)=round(he/tan);else ga(i,j)=round(hsum/(k^2));

end end end %ga 的大小和f1 的大小一致,所以必须取出中间部分像素值作为输出 g=ga((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2));

3、clc,clear,close all %[i0,map]=imread('trees.tif');d=[0.54,0.24,0.81;0.44,0.136,0.123;0.45,0.73,0.145;...0.21,0.12,0.56;0.45,0.54,0.33;0.33,0.23,0.141;...0.42,0.23,0.1;0.101,0.51,0.31;0.22,0.88,0.21;0.23,0.93,0.33];in=imread('pout.tif');[m,n]=size(in);for i=1:m for j=1:n % out(i,j,1)=map(in(i,j),1);% out(i,j,2)=map(in(i,j),2);% out(i,j,3)=map(in(i,j),3);ind=fix(in(i,j)/26);out(i,j,1)=d(ind,1);out(i,j,2)=d(ind,2);out(i,j,3)=d(ind,3);end end subplot(121),imshow(in)subplot(122),imshow(out)

4、clear,close all,clc in1=imread('moon.tif');%in1=rgb2gray(in1);%第一个独立的变换 f10=0;g10=0;f11=127;g11=0;f12=191;g12=255;f13=255;g13=255;figure(11),plot([f10,f11,f12,f13],[g10,g11,g12,g13],'r')axis tight,xlabel('f'),ylabel('g')title('intensity transformation')r11=(g11-g10)/(f11-f10);b11=g10-r11*f10;r12=(g12-g11)/(f12-f11);b12=g11-r12*f11;r13=(g13-g12)/(f13-f12);b13=g12-r13*f12;[m,n]=size(in1);in2=double(in1);for i=1:m for j=1:n f=in2(i,j);g1(i,j)=0;if(f>=0)&(f=f11)&(f=f12)&(f

f20=0;g20=0;f21=63;g21=255;f22=191;g22=255;f23=255;g23=0;figure(21),plot([f20,f21,f22,f23],[g20,g21,g22,g23],'r')axis tight,xlabel('f'),ylabel('g')title('intensity transformation')r21=(g21-g20)/(f21-f20);b21=g20-r21*f20;r22=(g22-g21)/(f22-f21);b22=g21-r22*f21;r23=(g23-g22)/(f23-f22);b23=g22-r23*f22;[m,n]=size(in1);in2=double(in1);for i=1:m for j=1:n f=in2(i,j);g2(i,j)=0;if(f>=0)&(f=f21)&(f=f22)&(f

g2=uint8(g2);figure(22),subplot(121),imshow(in1)subplot(122),imshow(g2)%imshow(mat2gray(g2))%第三个独立的变换

f30=0;g30=255;f31=63;g31=255;f32=127;g32=0;f33=255;g33=0;figure(31),plot([f30,f31,f32,f33],[g30,g31,g32,g33],'r')axis tight,xlabel('f'),ylabel('g')title('intensity transformation')r31=(g31-g30)/(f31-f30);b31=g30-r31*f30;r32=(g32-g31)/(f32-f31);b32=g31-r32*f31;r33=(g33-g32)/(f33-f32);b33=g32-r33*f32;[m,n]=size(in1);in2=double(in1);for i=1:m for j=1:n f=in2(i,j);g3(i,j)=0;if(f>=0)&(f=f31)&(f=f32)&(f

实验八 图像检测与分割

一、实验目的1、了解图像的实际获取过程。

2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。

3、熟练掌握图像读、写、显示、类型转换等matlab 函数的用法。

二、实验内容

1、应用一阶算子roberts 检测边缘。

2、用一阶算子sobel 检测边缘并对边界处的像素进行处理。

3、用上面描述的Otsu 算法编写matlab 程序实现图像分割。

三、实验原理

[g,t]=edge(image,method,threshold,direction)其中image 为输入图像method 为采用的方法类型:threshold 为阈值,如果给定阈值,则t= threshold,否则有函数自动计算出来并把其值返回给t;direction 为所寻找边缘的方向,其值可以为horizontal,vertical,both 默认为both;g 为返回的二值图像。

四、实验代码与结果

1、clc,clear,close all f=imread('lena.jpg');t=50;g=robertsf(f,t);subplot(121),imshow(f),title('原图')subplot(122),imshow(g),title('roberts 算子')%用roberts 算子对图像进行边缘检测的函数 function g=robertsf(f,t)[m,n]=size(f);g=f;h1=[-1 0;0 1];h2=[0-1;1 0];x1=h1;x2=h2;for i=2:1:m-1 for j=2:1:n-1 sum1=0;sum2=0;sum=0;for p=1:2 for q=1:2 x1(p,q)=f(i+(p-2),j+(q-2));x2(p,q)=f(i+(p-2),j+(q-2));sum1=sum1+x1(p,q)*h1(p,q);sum2=sum2+x2(p,q)*h2(p,q);sum=(sum1^2+sum2^2)^(1/2);end end if sum

else end end end2、clc,clear,close all f=imread('cameraman.tif');k=3;[m,n]=size(f);b1=[-1-2-1 0 0 0 1 2 1];b2=[-1 0 1-2 0 2-1 0 1];t=150;%f1 是对边缘像素补0 后得到的图像 f1=zeros(m+(k-1),n+(k-1));[m1,n1]=size(f1);%f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f;%注意这条指令绝对不能少 ga=f1;%取出窗口内的像素值并作标准均值滤波处理 for i=(k+1)/2:(m1-(k-1)/2)for j=(k+1)/2:(n1-(k-1)/2)a=0;%a 是一维数组1xk^2 x=1;%x 是数组的序号 for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2));x=x+1;end end sum1=0;sum2=0;for w=1:k^2 sum1=sum1+a(w)*b1(w);sum2=sum2+a(w)*b2(w);end sum=(sum1^2+sum2^2)^(1/2);

if sum

3、%利用Otsu 法阈值选择的方法分割图像

clc,clear,close all k=8;%k 表示无符号整型数的位数 L=2^k;in=imread('pout.tif');[m,n]=size(in);num=zeros(1,256);% num 是每个灰度级对应的像素个数 p=zeros(1,256);% p 是每个灰度级出现的概率

%p=zeros(1,256);% q 是每个灰度级出现的概率的累积分布函数 for i=1:m for j=1:n num(1,in(i,j)+1)=num(1,in(i,j)+1)+1;% 统计个数 end end p=num./(m*n);% 求概率 ut=0;%ut 是整幅图像的均值 for i=1:L ut=ut+(i-1)*p(i);end for t=0:L-1 w0=0;w1=0;for i=1:t w0=w0+p(i);end w1=1-w0;u0=0;

for i=1:t if w0>0 u0=u0+i*p(i)/w0;else u0=u0+0;end end u1=0;for i=(t+1):L if w1>0 u1=u1+i*p(i)/w1;else u1=u1+0;end end rou(t+1)=w0*w1*(u0-u1)^2;%类间方差的求取 end maxrou=max(rou);%类间方差的最大值 for i=1:L if rou(i)==maxrou r=i-1;end end r %类间方差最大所对应的灰度值 for i=1:m for j=1:n if in(i,j)>r out(i,j)=1;else out(i,j)=0;end end end subplot(121),imshow(in)subplot(122),imshow(out)运行结果得到的阈值为:114

数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告1一. 实验内容:主要是图像的几何变换的编程实现,具体包括图像的读取、改写,图像平移,图像的镜像,图像的转置,比例缩放,旋转变换等......

数字图像处理实验报告

刀豆文库小编为你整合推荐8篇数字图像处理实验报告,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......

数字图像处理实验报告

刀豆文库小编为你整合推荐8篇数字图像处理实验报告,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......

数字图像处理实验报告

实 验 报 告 书系部学生专业班实验 名称姓名名称 级时间:: : : :实验一 直方图均衡一、实验目的在学习图像直方图的概念、计算方法、性质和相关应用基础上,生成、绘制图像的直方......

数字图像处理实验报告

目录实验一: 数字图像的基本处理操作 ......................................................................................................2 1.1: 实验目的 ...............

下载数字图像处理实验报告word格式文档
下载数字图像处理实验报告.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文