【发布时间】:2015-02-27 00:52:57
【问题描述】:
为了区分图纸和照片,我想量化图像中的所有锐边。这种边缘是我们正在处理的图纸的典型特征,而它们在我们的照片中很少出现。
我听说锐利的边缘会在图像的 2D FT 频谱中产生高频。我可以用这段代码产生这样的光谱:
from PIL import Image
img = Image.open('test.jpg')
import numpy as np
img = img.convert('L')
img_as_np = np.asarray(img)
freq = np.fft.fft2(img_as_np)
我们打算使用示例图像来找到区分高频和低频的“正确”阈值。但是,上面的代码产生了一个矩阵(带有复数),我不知道如何从那里得到实际频率。任何数学天才可以帮助我,请:-)?
更新:我刚刚发现了以下函数:
np.abs(freq)
这似乎将复数转换为正浮点数。这些是我正在寻找的频率吗?这是一种在图像中寻找锐利边缘的工作方法吗?
更新 2:是的,np.abs() 完成了这项工作。这个问题可以被认为是答案。但我将其保持打开状态,以防有人知道区分图纸和照片的更可靠方法。
【问题讨论】:
-
高频也来自具有大量细节或噪点的照片。我希望您的训练图像具有代表性。
-
感谢您的警告!我将它与颜色分布分析结合使用。因此,它只是最终有助于检测正确图像类型的几个因素之一。
标签: python image-processing numpy fft edge-detection