all
close
all
warning
off
all
I
=
imread('lena.bmp')
%%如果是其他类型图像,请先转换为灰度图
%%没有噪声时的检测结果
BW_sobel
=
edge(I,'sobel')
BW_prewitt
=
edge(I,'prewitt')
BW_roberts
=
edge(I,'roberts')
BW_laplace
=
edge(I,'log')
BW_canny
=
edge(I,'canny')
figure(1)
subplot(2,3,1),imshow(I),xlabel('原始图像')
subplot(2,3,2),imshow(BW_sobel),xlabel('sobel检测')
subplot(2,3,3),imshow(BW_prewitt),xlabel('prewitt检测')
subplot(2,3,4),imshow(BW_roberts),xlabel('roberts检测')
subplot(2,3,5),imshow(BW_laplace),xlabel('laplace检测')
subplot(2,3,6),imshow(BW_canny),xlabel('canny检测')
%%加入高斯噪声(μ=0,σ^2=0.01)检测结果
I_g1
=
imnoise(I,'gaussian',0,0.01)
BW_sobel
=
edge(I_g1,'sobel')
BW_prewitt
=
edge(I_g1,'prewitt'脊竖)
BW_roberts
=
edge(I_g1,'roberts')
BW_laplace
=
edge(I_g1,'log')
BW_canny
=
edge(I_g1,'canny')
figure(2)
subplot(2,3,1),imshow(I_g1),xlabel('加入高斯噪声(μ=0,σ^2=0.01)图像')
subplot(2,3,2),imshow(BW_sobel),xlabel('sobel检测')
subplot(2,3,3),imshow(BW_prewitt),xlabel('prewitt检测')
subplot(2,3,4),imshow(BW_roberts),xlabel('roberts检测')
subplot(2,3,5),imshow(BW_laplace),xlabel('laplace检测')
subplot(2,3,6),imshow(BW_canny),xlabel('canny检测')
%%加入高斯噪声(μ=0,σ^2=0.02)检测结果
I_g2
=
imnoise(I,'gaussian',0,0.02)
BW_sobel
=
edge(I_g2,'sobel')
BW_prewitt
=
edge(I_g2,'prewitt')
BW_roberts
=
edge(I_g2,'roberts')
BW_laplace
=
edge(I_g2,'log')
BW_canny
=
edge(I_g2,'canny')
figure(3)
subplot(2,3,1),imshow(I_g2),xlabel('加入高斯噪声仔卜(μ=0,σ^2=0.02)图像')
subplot(2,3,2),imshow(BW_sobel),xlabel('sobel检测')
subplot(2,3,3),imshow(BW_prewitt),xlabel('prewitt检测')
subplot(2,3,4),imshow(BW_roberts),xlabel('roberts检测')
subplot(2,3,5),imshow(BW_laplace),xlabel('樱戚大laplace检测')
subplot(2,3,6),imshow(BW_canny),xlabel('canny检测')
f就是你导扮乱入的rgb图片。首先按照上面的代码建立一个.m文件,将文件存盘,命名为 colorgrad.m
然后在matlab命令窗肢缺绝口输入历姿如下命令:
>>f=imread('test.jpg') %这里的test.jpg是图片文件名
>>[VG,A,PPT]=colorgrad(f,0)
>>figureimshow(PPT)
你可以试试下面的程序:I=imread('myphoto.jpg') % 假设要处理的图像是myphoto.jpg
heights=size(I,1) % 图像的高
widths=size(I,2) % 图像的宽
m=8% 假设纵向分成8幅图
n=10% 假设横向分成10幅图
% 考虑到rows和cols不一定能被m和n整除,所以对行数和列数均分后要取整
rows=round(linspace(0,heights,m+1))% 各子图像的起始和终止州伏行标
cols=round(linspace(0,widths,n+1))% 各子图像的起始和终止列标
blocks=cell(m,n) % 用一个单元数组容纳各个子图像
for k1=1:m
for k2=1:n
blocks{k1,k2}=I(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:)
subimage=blocks{k1,k2}
% 以下是对subimage进行伍迹乎边缘检测
% 加入边缘检测的代码
% 以上是对subimage进行边缘检测
blocks{k1,k2}=subimage
end
end
processed=I% processed为处理后的图像,用原图像对其初始化
% 以下为拼接图像
for k1=1:m
for k2=1:n
processed(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:)=blocks{k1,k2}
end
end
figure,imshow(processed)
% 以上的程序已测试过,对灰度图像腔悉和真彩图像都可以运行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)