当前位置: 首页 > 面试题库 >

Python:获取非矩形区域的GLCM

古文康
2023-03-14
问题内容

我一直在使用skimage的SLIC实现来分割超像素中的图像。我想使用GLCM从这些超像素中提取其他功能,以解决分类问题。这些超像素不是矩形的。在MATLAB中,您可以将像素设置为NaN,算法将忽略它们(link)。我可以使用它在超像素周围制作边框,然后将未使用的像素设置为NaN。

skimage中的greycomatrix函数与MATLAB实现并不完全相同。将像素设置为NaN时,该函数在断言时失败,无法检查所有值是否都大于0。

有没有可以与非矩形ROI一起使用的Python实现?


问题答案:

尽管mahotas它也是一个出色的计算机视觉库,但无需停止使用skimage它。

什么
必要的,因为@Tonechas已经指出的那样,是那些NaN值设定为一个整数,由于np.nan具有类型floatgreycomatrix功能需要的整数数组。

最简单的选择是将那些设置NaN为零,但是,如果像素中已经有零值并且不想混合它们,则可以选择任何其他常数。之后,您要做的就是从GLCM中过滤出所选的值(再一次,通常为零)。

要了解这意味着什么,让我们看看是什么skimage告诉我们该greycomatrix函数的输出:

4维数组

值P
[i,j,d,theta]是灰度级j在距灰度级i的距离为d且角度为θ的角度出现的次数。如果normed为False,则输出为uint32类型,否则为float64。尺寸为:水平x水平x距离数x角度数。

换句话说,数组的前两个维定义一个矩阵,该矩阵告诉我们两个不同的值相隔一定距离多少次。请注意,GLCM并 没有
保留输入数组的形状。这些行和列告诉我们这些值之间的关系。

知道这一点,很容易过滤掉投资回报率之外的值(假设我们将那些NaN设置为零):

glcm = greycomatrix(img, [1], [0])  # Calculate the GLCM "one pixel to the right"
filt_glcm = glcm[1:, 1:, :, :]           # Filter out the first row and column

现在,您可以轻松计算过滤后的GLCM的Haralick属性。例如:

greycoprops(filt_glcm, prop='contrast')


 类似资料:
  • 本文向大家介绍openCV提取图像中的矩形区域,包括了openCV提取图像中的矩形区域的使用技巧和注意事项,需要的朋友参考一下 改编自详解利用OpenCV提取图像中的矩形区域(PPT屏幕等) 原文是c++版,我改成了python版,供大家参考学习。 主要思想:边缘检测—》轮廓检测—》找出最大的面积的轮廓—》找出顶点—》投影变换 运行效果 用到的图片 以上就是本文的全部内容,希望对大家的学习有所帮助

  • 如何用image Magick替换图像矩形区域内的颜色? 下面是输入和输出图像的示例,我使用Adobe Photoshop生成这些图像,方法是选择一个矩形区域(包含网格区域),并执行命令:并选择要替换为灰色的黑色。 注意,绿色跟踪可以具有任何形状和颜色(黑色除外),绿色像素覆盖了黑色像素,因此是不可能的。 我知道如何替换整个图像中的颜色,像这样: 但是上面用灰色替换了所有的黑色,甚至是黑色文本,比

  • 我有一个点[xmin,ymin,xmax,ymax]的列表,每个点都按黑点显示 请注意,有许多这样的矩形,如图像所示。红色的应检测删除,绿色的应保留。 输入是 n 矩形 输出是覆盖区域和它覆盖的矩形 id 。最好给出一些算法和解释。

  • 请帮助我如何找到两个矩形区域之间的交点。 例如:我在virtual earth MapsV6.3中搜索可视区域的结果 地图返回给我左上和右下的点作为纬度和经度。然后我平移区域移动到不同的位置。我有我的旧坐标保存现在我想找到共同的区域之间的旧的可视区域和新的可视区域。我已经有左上和右下的点了。

  • 问题内容: 我在python代码中遇到了麻烦。 我的问题是我需要在图像的感兴趣区域周围绘制一个矩形。如何在python中完成?我正在执行对象检测,并想在我相信在图像中找到的对象周围绘制一个矩形。 问题答案: 请不要尝试使用旧的cv模块,请使用cv2: [编辑]追加以下后续问题:

  • 在我的应用程序中使用了谷歌地图V2。下面是描述映射片段的代码片段。 如何限制​​用户可以导航的地图?我试着用OnCamerachenglistener做这件事,但它看起来很丑,而且不稳定。(也许这是我的错)