使用Python绘制平移图像后,找到高频中心的坐标

问题描述

我正在尝试编写代码以检测图像中的莫尔条纹。我对使用Python进行图像处理非常陌生,所以如果解决方案不重要,请原谅。

我的方法是,使用scipy fftshift功能来区分莫尔和非莫尔图像(请参见下文)。波纹图像有几个高频中心,而普通图像只有一个中心。

我想获取这些“中心”的坐标,但是我不知道该怎么做。 我对每个建议都很满意!

代码

import numpy as np
from scipy.fftpack import *
import imageio
import matplotlib.pyplot as plt
from matplotlib.colors import Lognorm

moire = imageio.imread(imgpath1)
nonMoire = imageio.imread(imgpath2)

moire = np.dot(moire[...,:3],[0.2989,0.5870,0.1140])
nonMoire = np.dot(nonMoire[...,0.1140])

noisy_gray_fft = fft2(moire)
orig_gray_fft = fft2(nonMoire)

orig_gray_fft_shift = fftshift(orig_gray_fft)
noisy_gray_fft_shift = fftshift(noisy_gray_fft)

plt.subplot(121)
plt.imshow(np.abs(noisy_gray_fft_shift),cmap='gray',norm=Lognorm(vmin=5))
plt.subplot(122)
plt.imshow(np.abs(orig_gray_fft_shift),norm=Lognorm(vmin=5))

非摩尔纹原版:

Original non Moire

云纹原稿:

Original Moire

FFT后:

After FFT

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)