Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. close all;
  2. clear all;
  3.  
  4. knee = double(imread('knee.png'));
  5.  
  6.  
  7. figure()
  8. imshow(knee,[]);
  9.  
  10. [X,Y] = ginput(1);
  11. X = floor(X);
  12. Y = floor(Y);
  13.  
  14. stack = zeros(1000,2);
  15. visited = zeros(size(knee));
  16. segmented = zeros(size(knee));
  17. top = 1;
  18.  
  19. stack(top,1) = X;
  20. stack(top,2) = Y;
  21. visited(X,Y) = 1;
  22. segmented(X,Y) = 1;
  23.  
  24. prog = 4;
  25.  
  26. while top ~= 0
  27. X = stack(top,1);
  28. Y = stack(top,2);
  29. top = top - 1;
  30. neighbours = [X-1 Y+1; X-1 Y; X-1 Y-1; X Y-1; X+1 Y-1; X+1 Y; X+1 Y+1; X Y+1];
  31. for i = 1:8
  32. if visited(neighbours(i,1),neighbours(i,2)) == 0
  33. measure = abs(knee(X,Y)-knee(neighbours(i,1),neighbours(i,2)));
  34. if measure < prog
  35. segmented(neighbours(i,1),neighbours(i,2)) = 1;
  36. top = top + 1;
  37. stack(top,1) = neighbours(i,1);
  38. stack(top,2) = neighbours(i,2);
  39. end
  40. end
  41. visited(neighbours(i,1),neighbours(i,2)) = 1;
  42. end
  43. end
  44.  
  45. figure();
  46. imshow(segmented,[]);
  47.  
  48. %%%%%%%%%%%%%%%%%%%
  49.  
  50. figure();
  51. imshow(knee,[]);
  52.  
  53. knee = imfilter(knee,fspecial('gaussian',7,7));
  54.  
  55. figure();
  56. imshow(knee,[]);
  57.  
  58. [X,Y] = ginput(1);
  59. X = floor(X);
  60. Y = floor(Y);
  61.  
  62. Icopy = knee;
  63.  
  64. stack = zeros(1000,2);
  65. visited = zeros(size(knee));
  66. segmented = zeros(size(knee));
  67. top = 1;
  68.  
  69. stack(top,1) = X;
  70. stack(top,2) = Y;
  71. visited(X,Y) = 1;
  72. segmented(X,Y) = 1;
  73.  
  74. prog = 15;
  75.  
  76. n = 1;
  77. mean = knee(X,Y);
  78.  
  79. while top ~= 0
  80. X = stack(top,1);
  81. Y = stack(top,2);
  82. top = top - 1;
  83. n = n+1;
  84. neighbours = [X-1 Y+1; X-1 Y; X-1 Y-1; X Y-1; X+1 Y-1; X+1 Y; X+1 Y+1; X Y+1];
  85. for i = 1:8
  86. if visited(neighbours(i,1),neighbours(i,2)) == 0
  87. mean = (mean*(n-1)+knee(X,Y))/n;
  88. measure = abs(mean-knee(neighbours(i,1),neighbours(i,2)));
  89. if measure < prog
  90. segmented(neighbours(i,1),neighbours(i,2)) = 1;
  91. top = top + 1;
  92. stack(top,1) = neighbours(i,1);
  93. stack(top,2) = neighbours(i,2);
  94. end
  95. end
  96. visited(neighbours(i,1),neighbours(i,2)) = 1;
  97. end
  98. if mod(n,800) == 0
  99. imshow(Icopy.*segmented);
  100. drawnow;
  101. end
  102. end
  103.  
  104. figure();
  105. imshow(segmented,[]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement