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