Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. % 1.4
  2. function canny = MyCanny(img, sigma, gradThresh)
  3. width = 5;
  4. img = rgb2gray(img);
  5. gFilter = fspecial('gaussian', width, sigma);
  6. h = fspecial('sobel');
  7. imConv = imfilter(img, gFilter, 'conv');
  8. imConv_y = imfilter(imConv, h, 'conv');
  9. imConv_x = imfilter(imConv, h', 'conv');
  10.  
  11. imConv_x = im2double(imConv_x);
  12. imConv_y = im2double(imConv_y);
  13.  
  14. img_grad_mag = sqrt((imConv_x.^2) + (imConv_y.^2));
  15. img_thresh = img_grad_mag > gradThresh;
  16.  
  17. img_grad_or = atan2(imConv_y,imConv_x);
  18. img_grad_or = (img_grad_or)*180/pi;
  19.  
  20. zeroArray = zeros(size(img_thresh,1)+1,size(img_thresh,2)+1);
  21. zeroArray(2:size(img_thresh,1),2:size(img_thresh,2)) = img_thresh;
  22.  
  23. newArray = zeroArray;
  24.  
  25. for row = 2:size(newArray,1)-1
  26. for col = 2:size(newArray,2)-1
  27. p = img_grad_or(row,col);
  28. while (p > 360)
  29. p = p - 360;
  30. end
  31. switch p
  32. case (p >= 0 && p < 22.5 || p >= 337.5 && p <= 360 || p >= 157.5 && p < 202.5) %0 || 360 || 180
  33. if (zeroArray(row,col) > zeroArray(row+1,col) && zeroArray(row,col) > zeroArray(row-1,col))
  34. newArray(row,col) = zeroArray(row,col);
  35. else
  36. newArray(row,col) = 0;
  37. end
  38. case (p >= 22.5 && p < 67.5 || p >= 202.5 && p < 247.5) %45 || 225
  39. if (zeroArray(row,col) > zeroArray(row+1,col+1) && zeroArray(row,col) > zeroArray(row-1,col-1))
  40. newArray(row,col) = zeroArray(row,col);
  41. else
  42. newArray(row,col) = 0;
  43. end
  44. case (p >= 67.5 && p < 112.5 || p >= 247.5 && p < 292.5) %90 || 270
  45. if (zeroArray(row,col) > zeroArray(row,col+1) && zeroArray(row,col) > zeroArray(row,col-1))
  46. newArray(row,col) = zeroArray(row,col);
  47. else
  48. newArray(row,col) = 0;
  49. end
  50. case (p >= 112.5 && p < 157.5 || p >= 292.5 && p < 337.5) %135 || 315
  51. if (zeroArray(row,col) > zeroArray(row+1,col-1) && zeroArray(row,col) > zeroArray(row-1,col+1))
  52. newArray(row,col) = zeroArray(row,col);
  53. else
  54. newArray(row,col) = 0;
  55. end
  56. end
  57. end
  58. end
  59. canny = newArray(2:size(img_thresh,1),2:size(img_thresh,2));
  60. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement