Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % 1.4
- function canny = MyCanny(img, sigma, gradThresh)
- width = 5;
- img = rgb2gray(img);
- gFilter = fspecial('gaussian', width, sigma);
- h = fspecial('sobel');
- imConv = imfilter(img, gFilter, 'conv');
- imConv_y = imfilter(imConv, h, 'conv');
- imConv_x = imfilter(imConv, h', 'conv');
- imConv_x = im2double(imConv_x);
- imConv_y = im2double(imConv_y);
- img_grad_mag = sqrt((imConv_x.^2) + (imConv_y.^2));
- img_thresh = img_grad_mag > gradThresh;
- img_grad_or = atan2(imConv_y,imConv_x);
- img_grad_or = (img_grad_or)*180/pi;
- zeroArray = zeros(size(img_thresh,1)+1,size(img_thresh,2)+1);
- zeroArray(2:size(img_thresh,1),2:size(img_thresh,2)) = img_thresh;
- newArray = zeroArray;
- for row = 2:size(newArray,1)-1
- for col = 2:size(newArray,2)-1
- p = img_grad_or(row,col);
- while (p > 360)
- p = p - 360;
- end
- switch p
- case (p >= 0 && p < 22.5 || p >= 337.5 && p <= 360 || p >= 157.5 && p < 202.5) %0 || 360 || 180
- if (zeroArray(row,col) > zeroArray(row+1,col) && zeroArray(row,col) > zeroArray(row-1,col))
- newArray(row,col) = zeroArray(row,col);
- else
- newArray(row,col) = 0;
- end
- case (p >= 22.5 && p < 67.5 || p >= 202.5 && p < 247.5) %45 || 225
- if (zeroArray(row,col) > zeroArray(row+1,col+1) && zeroArray(row,col) > zeroArray(row-1,col-1))
- newArray(row,col) = zeroArray(row,col);
- else
- newArray(row,col) = 0;
- end
- case (p >= 67.5 && p < 112.5 || p >= 247.5 && p < 292.5) %90 || 270
- if (zeroArray(row,col) > zeroArray(row,col+1) && zeroArray(row,col) > zeroArray(row,col-1))
- newArray(row,col) = zeroArray(row,col);
- else
- newArray(row,col) = 0;
- end
- case (p >= 112.5 && p < 157.5 || p >= 292.5 && p < 337.5) %135 || 315
- if (zeroArray(row,col) > zeroArray(row+1,col-1) && zeroArray(row,col) > zeroArray(row-1,col+1))
- newArray(row,col) = zeroArray(row,col);
- else
- newArray(row,col) = 0;
- end
- end
- end
- end
- canny = newArray(2:size(img_thresh,1),2:size(img_thresh,2));
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement