Advertisement
kpfp_linux

MRO projekt 5:09:33am dzień 1

Jan 7th, 2013
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.01 KB | None | 0 0
  1. img = imread('test7.png');
  2. bw = im2bw(img, 0.9);
  3. bw = ~bw;
  4.  
  5. % matlabpool open
  6. rots = 1:16; % todo: zwiększyć do 1:360. Niech się komp męczy, a co!
  7. rot2area = zeros(size(rots));
  8. rotang=360/size(rots,2);
  9. parfor i=rots
  10.     imm = imrotate(bw, i*rotang);
  11.    
  12.     % szumy won
  13.     L = bwlabel(imm);
  14.     s = regionprops(imm, 'Area');
  15.     area_values = [s.Area];
  16.     idx = find(5 < area_values);
  17.     imm = ismember(L, idx);
  18.    
  19.     % pole otoczki
  20.     [r,c] = find(imm);
  21.     height = max(r)-min(r);
  22.     width = max(c)-min(c);
  23.     rot2area(i) = height * width;
  24. end
  25.  
  26. % dobieramy najlepsze obroty
  27.  
  28. [~,rots] = sort(rot2area);
  29. rots = rots(1:4);
  30.  
  31. imm = imrotate(bw, rots(4)*rotang);
  32.  
  33. % odszumiamy raz jeszcze
  34. L = bwlabel(imm);
  35. s = regionprops(imm, 'Area');
  36. area_values = [s.Area];
  37. idx = find(5 < area_values);
  38. imm = ismember(L, idx);
  39.  
  40. % to nic nie daje, przynajmniej dla testowego tekstu
  41. imm = imerode(imm, strel('rectangle',[1,1]));
  42.  
  43. s = regionprops(imm, 'Centroid', 'BoundingBox');
  44.  
  45. cents = cat(1,s.Centroid);
  46. bgbox = cat(1,s.BoundingBox);
  47. imshow(imm)
  48. hold on
  49. %plot(cents(:,1), cents(:,2), 'r*')
  50. %idx = find(bgbox(:,3) < 1.5 * bgbox(:,4)); % indeksy połączonych
  51. idx = find(bgbox(:,3) < 1.5 * bgbox(:,4)); % indeksy połączonych
  52. for i=1:size(bgbox,1)
  53.     if ~ismember(i, idx)
  54.         rectangle('Position', bgbox(i,:), 'Curvature', [0,0], 'EdgeColor', 'r')
  55.     else
  56.         rectangle('Position', bgbox(i,:), 'Curvature', [0,0], 'EdgeColor', 'g')
  57.     end
  58. end
  59. hold off
  60.  
  61. % % szumy won
  62. % L = bwlabel(bw);
  63. % s = regionprops(L, 'Area');
  64. % area_values = [s.Area];
  65. % idx = find(5 < area_values);
  66. % bw = ismember(L, idx);
  67. % imshow(bw)
  68. %
  69. % % oblicz otoczkę wszystkiego
  70. % [r,c] = find(bw);
  71. % height = max(r)-min(r);
  72. % width = max(c)-min(c);
  73. % area = height * width;
  74.  
  75. %rots = 1:2;
  76. %t_im1rs = zeros(size(rots,2),1);
  77. %for angle = rots
  78. %    t_im1rs(angle) = 0; %imrotate(t_im1, angle);
  79. %    tmp = regionprops(imrotate(im, angle), 'BoundingBox');
  80. %    [ul_corner, width] = tmp.BoundingBox
  81. %end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement