Kar*_*ini 3 matlab image-processing
我需要删除二进制图像中的水平和垂直线.有没有过滤这些线的方法?bwareaopen()去除这些线是不好的方法,并且膨胀和侵蚀对这些情况也不好.有人知道解决方案吗?
示例图片:

编辑:(添加更多示例图像:
http://s1.upload7.ir/downloads/pPqTDnmsmjHUGTEpbwnksf3uUkzncDwr/example%202.png
图像源文件:
https://www.dropbox.com/sh/tamcdqk244ktoyp/AAAuxkmYgBkB8erNS9SajkGVa?dl=0
www.directexe.com/9cg/pics.rar
使用regionprops和移除具有高偏心率(意味着区域长而细)的区域和接近0或接近90度的方向(垂直或水平的区域).
码:
img = im2double(rgb2gray(imread('removelines.jpg')));
mask = ~im2bw(img);
rp = regionprops(mask, 'PixelIdxList', 'Eccentricity', 'Orientation');
% Get high eccentricity and orientations at 90 and 0 degrees
rp = rp([rp.Eccentricity] > 0.95 & (abs([rp.Orientation]) < 2 | abs([rp.Orientation]) > 88));
mask(vertcat(rp.PixelIdxList)) = false;
imshow(mask);
Run Code Online (Sandbox Code Playgroud)
输出:

| 归档时间: |
|
| 查看次数: |
2527 次 |
| 最近记录: |