Guest User

Untitled

a guest
Dec 11th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. %% 读取图片
  2. img = imread('船.bmp');
  3. %% 全局阈值二值化
  4. bw = img>65;
  5. figure;
  6. imshow(bw);
  7. %% 横向投影
  8. ys = sum(bw,2);
  9. figure;
  10. plot(ys);
  11. %% 去掉下面的部分和宽度大于1/2的部分
  12. for i=length(ys):-1:1
  13. if ys(i) > 0
  14. ys(i) = 0;
  15. else
  16. break;
  17. end
  18. end
  19. ys(ys>size(img,2)/2) = 0;
  20. bw(ys==0,:)=0;
  21. figure;
  22. imshow(bw);
  23. %% 选取最大连通分量
  24. L = bwlabel(bw);
  25. areas = regionprops(L, 'area');
  26. areas = [areas.Area];
  27. index = find(areas==max(areas));
  28. mask=L==index;
  29. figure;
  30. tmp = img;
  31. tmp(mask==0) = 0;
  32. imshow(tmp);
  33.  
  34.  
  35.  
  36. %% 区域生长
  37. figure;
  38. mins = [109*ones(35,1),(121:155)'];
  39. thres = 6;
  40. g_thres = 75;
  41. while ~isempty(mins)
  42. l = size(mins,1);
  43. for i = 1:l
  44. x = mins(i,1);
  45. y = mins(i,2);
  46. v = img(x,y);
  47. if x==1 || y==1 || x==285 || y==378
  48. continue
  49. end
  50. for j=-1:1
  51. for k=-1:1
  52. if (abs(img(x+j,y+k)-v) < thres) && (mask(x+j,y+k)==0) && img(x+j,y+k)>g_thres
  53. mins = [mins;x+j,y+k];
  54. mask(x+j,y+k) = 1;
  55. end
  56. end
  57. end
  58. end
  59. mins(1:l,:) = [];
  60. end
  61. subplot(2,2,1);
  62. imshow(mask);
  63. subplot(2,2,2);
  64. ic = imclose(mask,ones(3,3));
  65. imshow(ic);
  66. subplot(2,2,3);
  67. res = img;
  68. res(ic==0)=0;
  69. imshow(res);
Add Comment
Please, Sign In to add comment