Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 碳纤维图像的频域滤波器_Python_Opencv_Matplotlib - Fatal编程技术网

Python 碳纤维图像的频域滤波器

Python 碳纤维图像的频域滤波器,python,opencv,matplotlib,Python,Opencv,Matplotlib,我目前正在尝试为碳纤维图像编写一个特定于域的频率滤波器 我已经加载了图像,执行了2D FFT,并将0频率移到了中心 现在我正试图找到白线的方向。我知道我应该在0°到180°的角度上循环。在每个角度增量处,图4所示内切圆的半径向量应以指定角度绘制,强度沿其插值并汇总 之后,我想用巴特沃斯方程来平滑滤镜中从白色到黑色的过渡 到目前为止,我的代码如下所示: import cv2 import numpy as np from matplotlib import pyplot as plt i

我目前正在尝试为碳纤维图像编写一个特定于域的频率滤波器

我已经加载了图像,执行了2D FFT,并将0频率移到了中心

现在我正试图找到白线的方向。我知道我应该在0°到180°的角度上循环。在每个角度增量处,图4所示内切圆的半径向量应以指定角度绘制,强度沿其插值并汇总

之后,我想用巴特沃斯方程来平滑滤镜中从白色到黑色的过渡

到目前为止,我的代码如下所示:

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread(r'C:\...')
grayimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
f = np.fft.fft2(grayimg)
magnitude_spectrum = 20*np.log(1+np.abs(f))
fshift = np.fft.fftshift(magnitude_spectrum)

plt.figure(1)
plt.imshow(grayimg,cmap = "gray")
plt.title("Input Image"), plt.xticks([]), plt.yticks([])
plt.figure(2)
plt.imshow(magnitude_spectrum, cmap="gray")
plt.title("Magnitude Spectrum"), plt.xticks([]), plt.yticks([])
plt.figure(3)
plt.imshow(fshift, cmap="gray")
plt.title("fshift"), plt.xticks([]), plt.yticks([])

rows, cols = grayimg.shape
crow, ccol = int(rows/2), int(cols/2)
eps = np.arange(0,180,0.1)

plt.show()
如果有人能告诉我如何实现我的目标,我将不胜感激

谢谢你抽出时间


编辑:我认为解决方案是从skimage.draw导入“line()”命令。但是如果我想损坏角度,我就必须插值像素,对吗?/P>选择阈值以上的像素,拟合一个穿过原点的线,y=a·席想在每一个角度内插和总结功率谱,找到具有最高强度的线,这样我就知道了我的纤维有什么方向。