你好我的家庭作業的一部分。我需要使用Sobel邊緣檢測來計算並顯示圖像balls1.tif的邊緣幅度圖像和邊緣方向圖像。Sobel邊緣檢測 - MATLAB
不要使用MATLAB的邊緣功能。你可以使用conv2。 顯示強邊緣像素(閾值以上)的二值邊緣圖像(1邊緣像素,0無邊緣)。 確定消除球陰影的閾值。
,這裏是我的main.m
addpath(fullfile(pwd,'TOOLBOX'));
addpath(fullfile(pwd,'images'));
%Sobel Edge Detection
Image = readImage('balls1.tif');
showImage(Image);
message = sprintf('Sobel Edge Detection');
sobelEdgeDetection(Image);
uiwait(msgbox(message,'Done', 'help'));
close all
這裏是我的SobeEdgeDetection.m
function [ output_args ] = SobelEdgeDetection(Image)
maskX = [-1 0 1 ; -2 0 2; -1 0 1];
maskY = [-1 -2 -1 ; 0 0 0 ; 1 2 1] ;
resX = conv2(Image, maskX);
resY = conv2(Image, maskY);
magnitude = sqrt(resX.^2 + resY.^2);
direction = atan(resY/resX);
thresh = magnitude < 101;
magnitude(thresh) = 0;
showImage(magnitude);
end
我的問題是:
1.我是用來做什麼方向?我如何顯示它?
2.有沒有更好的方式來獲得一個閾值,以消除球的陰影。我用試錯....
這些都是我的結果就顯示幅度:
方向 - 是圖像上的梯度方向,它與物體邊緣正交。你的圖片不會讓你消除陰影:在這種情況下,你會失去一些上邊框。 –