【问题标题】:find position of image surranded by black area找到被黑色区域包围的图像位置
【发布时间】:2011-09-06 16:02:36
【问题描述】:

有一个图像,被黑色区域包围,我想找到这个图像的确切位置(被黑色区域包围)。我的意思是这张图片的四个角的坐标。谢谢。

【问题讨论】:

  • 但问题不在于二值图像...
  • @chee:但是您可以创建一个二值图像(即不在周围黑色区域中的所有内容)并在链接的问题中应用解决方案。
  • 请更清楚地指定您的输入和输出。图像是位图吗?你想要角落的像素坐标吗?
  • 它是一张 jpg 图像,是的,它想获取角的像素坐标以获取图像的位置。

标签: matlab


【解决方案1】:

您可以在图像上应用二阶导数蒙版,然后该蒙版将准确地拾取颜色从黑色变为图片内容的点。然后,您可以分别提取第一行和最后一行和最后一列,并获得坐标。

【讨论】:

    【解决方案2】:

    如果你在 matlab 中:

    遮住黑色区域。要么尝试:

    Image = logical(Image)
    

    或者找到一个黑色体素的强度(可能为零)然后说:

    Image = ind2sub(size(Image), find(Image ~= blackPixelIntensity))
    

    一旦你有了图像的二进制非黑色部分(所以只有对象而不是背景),你只想找到每个体素的最小、最大角。说:

    [x y] = ind2sub(size(Image), find(Image ~= 0))
    c1 = [min(x) min(y)]
    c2 = [max(x) min(y)]
    c3 = [max(x) max(y)]
    c4 = [min(x) min(y)]
    

    c1,...,c4 是你的角:)

    因为我无法访问 matlab atm,所以请让我知道任何语法错误。

    泰勒米勒

    编辑:如果您只是想要图像非黑色部分的整个周边,只需执行上述前两行代码中的任何一个,然后说:

    Imperim = bwperim(Image)
    

    Edit2:注意 Image 是二维数组,你可以使用任何你想在 jpg 中加载的东西:P

    【讨论】:

    • 嘿,“黑色体素”太习惯 3D 了:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2016-10-01
    相关资源
    最近更新 更多