1. MATLAB中canny 的问题
程序中第一次使用imshow前面可不加figure语句;但第二次及之后再次使用imshow,前面要加上figure语句,比如你的程序可修改为
I=imread('sea.png');
mysize=size(I);
if numel(mysize)>2
I=rgb2gray(I); %若为彩色图像,将其转换为灰度图像
else
I=I;
end
BW=edge(I,'canny');
imshow(I);title('原图');
figure;
imshow(BW);title('canny算子检测图');
2. CANNY算子边缘检测matlab实现过程
X=imread('图像');
Y=edge(X,'canny');
3. 求MATLAB代码
我只能说,这种限定行数的东西很疼。
再说句不好听的,多一些空行,代码一行拆成两行写,多一些注释,再牛一点把一些MATLAB自带的函数用循环再实现一次,这样的话,几百行的代码肯定可以干到1200行。
4. 在matlab软件中用拉普拉斯算子和canny算子进行边缘检测的程序
i=imread('1.jpg'); 读入图像1
i1=rgb2gray(i); 把rgb图像转换成灰度图像
bw1=edge(i1,'log',0.07); 做阈值为0.07的高斯—拉普拉斯(Log)算法
figure(3),imshow(i); 显示原图
figure(4),imshow(bw1); 显示高斯—拉普拉斯(Log)边缘检测后的图
5. 基于canny算子的边缘检测技术 的matlab程序 要程序可以用的 麻烦你了
I=imread(‘yxl.tif’);%读取图像
imshow(I) %显示原图像
BW3=edge(I,' canny',0.2); %canny图像边缘提取
figure,imshow(BW3) %显示canny图像
Canny方法不容易受噪声干扰,能够检测到真正的弱边缘。
下面附上其他的一些程序希望对你有用:
直方图均衡化:
>> I=imread('ck.bmp');
>> J=rgb2gray(I);
>> H=histeq(J); %计算和显示灰度图像J的直方图
>> subplot(2,2,1),imshow(J)
>> subplot(2,2,2),imshow(H)
>> subplot(2,2,3),imhist(J) %显示原始图像直方图
>> subplot(2,2,4),imhist(H) %显示均衡化后图像的直方图
直方图规定化:
>> I=imread('0.jpg');
>> J=histeq(I,32); %均衡化成32个灰度级的直方图
>> [counts,x]=imhist(J); %返回直方图图像向量counts
>> Q=imread('0.jpg');
>> figure,
>> subplot(2,2,1),imshow(Q);
>> subplot(2,2,2),imhist(Q);
>> M=histeq(Q,counts); %将原始图像Q的直方图变成指定向量counts
>> subplot(2,2,3),imshow(M);
>> subplot(2,2,4),imhist(M);
加入各种噪声:
M=imread('dl011.jpg') %读取MATLAB中的名为dl011.jpg的图像
subplot(3,3,1)
imshow(M) %显示原始图像
title('original')
P1=imnoise(M,'gaussian',0.02) %加入高斯躁声
subplot(3,3,2)
imshow(P1) %加入高斯躁声后显示图像
title('gaussian noise');
P2=imnoise(M,'salt & pepper',0.02) %加入椒盐躁声
subplot(3,3,3)
imshow(P2) %%加入椒盐躁声后显示图像
title('salt & pepper noise');
g=medfilt2(P1) %对高斯躁声中值滤波
subplot(3,3,5)
imshow(g)
title('medfilter gaussian')
h=medfilt2(P2) %对椒盐躁声中值滤波
subplot(3,3,6)
imshow(h)
title('medfilter salt & pepper noise')
l=[1 1 1 %对高斯躁声算术均值滤波
1 1 1
1 1 1];
l=l/9;
k=conv2(P1,l)
subplot(3,3,8)
imshow(k,[])
title('arithmeticfilter gaussian')
%对椒盐躁声算术均值滤波
d=conv2(P2,l)
subplot(3,3,9)
imshow(d,[])
title('arithmeticfilter salt & pepper noise')
6. 寻找分水岭,canny边缘检测的matlab程序~
以下是一段MATLAB程序,经运行没问题。有注释,有分水岭算法。
afm = imread('cameraman.tif');figure, imshow(afm);
se = strel('disk', 15);
Itop = imtophat(afm, se); % 高帽变换
Ibot = imbothat(afm, se); % 低帽变换
figure, imshow(Itop, []); % 高帽变换,体现原始图像的灰度峰值
figure, imshow(Ibot, []); % 低帽变换,体现原始图像的灰度谷值
Ienhance = imsubtract(imadd(Itop, afm), Ibot);% 高帽图像与低帽图像相减,增强图像
figure, imshow(Ienhance);
Iec = imcomplement(Ienhance); % 进一步增强图像
Iemin = imextendedmin(Iec, 20); figure,imshow(Iemin) % 搜索Iec中的谷值
Iimpose = imimposemin(Iec, Iemin);
wat = watershed(Iimpose); % 分水岭分割
rgb = label2rgb(wat); figure, imshow(rgb); % 用不同的颜色表示分割出的不同区域
7. MATLAB Canny算子实现图像边缘检测的问题
不是必须使用matlab自己的图片。
你要把你想处理的图片加入matlab路径中
并且有个问题是,
第一句后加入一句
I=rgb2gray(I);
比较保险。因为edge函数要求输入必须是二维矩阵
8. matlab canny算子边缘检测函数代码
clc
clear
all
close
all
I
=
imread('cameraman.tif');
%
读入图像
imshow(I);title('原图')
BW1
=
edge(I,'canny');
%
调用canny函数
figure,imshow(BW1);
%
显示分割后的图像,即梯度图像
title('Canny')
9. 需要一段用Canny算子实现图像边缘检测的MATLAB程序,拜托高手们帮帮忙,很急啊!
M=imread('');%读入你的图片
BW = edge(I,'canny');%边缘检测函数
imshow(BW) %显示检测后的图象
10. matlab canny算子边缘检测函数代码
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('c