image - 如何检测区域上方和下方的点?

标签 image matlab image-processing image-segmentation

我有这张图片:

enter image description here

其中红点是划分该阿拉伯语词段的不同字母的坐标。

我想检测点之间区域上方或下方的点。

这些点是(从左到右)= [81,183;80,217;83,275;83,314]

现在,在 [81,183][80,217] 之间的字母上方有一个点。同样,在 [80,217][83,275] 之间的部分上方以及区域 [83,275][83,314]< 之间也有点。/.

我想做的是假设在坐标上方检测到一个点,那么必须删除该坐标。 是否可以在 Matlab 中检测到这些?

编辑:这是原始图像

enter image description here

第一张图片只是显示我感兴趣区域的裁剪

最佳答案

您可以使用regionprops提取各个对象的坐标 这是一个示例实现:

im=rgb2gray(imread('/image/jic1X.jpg'));
P=regionprops(~im2bw(im), 'All');

Areas=cell2mat({P.Area});
Centroids=cell2mat({P.Centroid}');

仅选择面积大于 10 但小于 100 的点:

Coord=Centroids(Areas< 100 & Areas > 10,:);

监控发现的点:

imshow(im);
hold on
for k=1:length(Coord)
    plot(Coord(k,1), Coord(k,2), 'ro');
    hold on
end

结果:

Dots found

然后您可以使用以下方法对点进行排序:

Aboves=Coord(Coord(:,2) < 80,:);
Belows=Coord(Coord(:,2) > 80,:);

从这里开始,有多种方法可以解决您的问题,其中一种选择如下:

dots=[81,183;80,217;83,275;83,314];

DetectDots=zeros(length(dots)-1, 1); % Creating a vector of zeros corresponding to the gaps between the elements in 'dots' 
for k=1:size(dots,1)-1
    if ~isempty(find((Aboves(:,1) > dots(k,2) & Aboves(:,1) < dots(k+1,2)))) %*
        DetectDots(k)=1;
    elseif ~isempty(find((Belows(:,1) > dots(k,2) & Belows(:,1) < dots(k+1,2))))
        DetectDots(k)=-1;
    else
        DetectDots(k)=0;
    end

end

结果是一个向量DetectDots,其值为[1,1,-1],在这种情况下,表明两个第一个点之间有上面的点,并且在第二个和第三个点之间,以及向量的第三个和最后一个点之间的下面的点 dots

*find 返回一个逻辑数组,其中包含满足条件的数组。 isempty 检查 find 的输出是否至少有一个元素。因此,如果数组 AbovesBelows 中至少有一个元素满足条件,则条件为 1。 ~ 是逻辑 NOT,因此 ~= 表示不等于。 & 是逻辑与。另请注意,图像和数组之间的坐标在 matlab 中是倒置的。

关于image - 如何检测区域上方和下方的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23201042/

相关文章:

ios - 如何检索 UITableViewCell 的缩略图

python - 枕头图像类型错误: an integer is required (got type tuple)

image - 为什么代码在调用 TImage.Picture.LoadFromFile 后继续运行?

MATLAB:更快的零矩阵预分配

java - 求图像 Java 的平均值

java - 将图像从 android 串行发送到 java 应用程序时出错 -javax.imageio.IIOException : Bogus Huffman table definition

Matlab symvar 函数的 Python 替代品

matlab - CUDA 和 MATLAB : MEX file crashes MATLAB on clearing

opencv - 使用 OpenCV 在图像中查找直线段

opencv - 使用 opencv 在种植园航拍图像中分割树木的最佳方法