- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用傅里叶校正图像中的曝光。这是我面临的错误
5 padded = np.log(padded + 1) #so we never have log of 0
6 global complex
7 complex = cv2.dft(np.float32(padded)/255.0, flags = cv2.DFT_COMPLEX_OUTPUT)
8 complex = np.fft.fftshift(complex)
9 img = 20 * np.log(cv2.magnitude(complex[:,:,0], complex[:,:,1]))
error: OpenCV(4.4.0) /tmp/pip-req-build-njn2fp78/opencv/modules/core/src/dxt.cpp:3335: error: (-215:Assertion failed) type == CV_32FC1 || type == CV_32FC2 || type == CV_64FC1 || type == CV_64FC2 in function 'dft'
我的代码:
import cv2
import numpy as np
from math import exp, sqrt
image = cv2.imread("2.png")
# grayimg = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
height, width, alpha = image.shape
dft_M = cv2.getOptimalDFTSize(height)
dft_N = cv2.getOptimalDFTSize(width)
#Filter parameters
yh, yl, c, d0, = 0, 0, 0, 0
#User parameters
y_track, d0_track, c_track = 0, 0, 0
complex = 0
def main():
#copyMakeBorder(src, top, bottom, left, right, borderType[, dst[, value]])
#BORDER_CONSTANT = Pad the image with a constant value (i.e. black or 0)
padded = cv2.copyMakeBorder(image, 0, dft_M - height, 0, dft_N - width, cv2.BORDER_CONSTANT, 0)
padded = np.log(padded + 1) #so we never have log of 0
global complex
complex = cv2.dft(np.float32(padded)/255.0, flags = cv2.DFT_COMPLEX_OUTPUT)
complex = np.fft.fftshift(complex)
img = 20 * np.log(cv2.magnitude(complex[:,:,0], complex[:,:,1]))
cv2.namedWindow('Image', cv2.WINDOW_NORMAL)
cv2.imshow("Image", image)
cv2.resizeWindow("Image", 400, 400)
cv2.namedWindow('DFT', cv2.WINDOW_NORMAL)
cv2.imshow("DFT", np.uint8(img))
cv2.resizeWindow("DFT", 250, 250)
cv2.createTrackbar("YL", "Image", y_track, 100, setyl)
cv2.createTrackbar("YH", "Image", y_track, 100, setyh)
cv2.createTrackbar("C", "Image", c_track, 100, setc)
cv2.createTrackbar("D0", "Image", d0_track, 100, setd0)
cv2.waitKey(0)
cv2.destroyAllWindows()
def homomorphic():
global yh, yl, c, d0, complex
du = np.zeros(complex.shape, dtype = np.float32)
#H(u, v)
for u in range(dft_M):
for v in range(dft_N):
du[u,v] = sqrt((u - dft_M/2.0)*(u - dft_M/2.0) + (v - dft_N/2.0)*(v - dft_N/2.0))
du2 = cv2.multiply(du,du) / (d0*d0)
re = np.exp(- c * du2)
H = (yh - yl) * (1 - re) + yl
#S(u, v)
filtered = cv2.mulSpectrums(complex, H, 0)
#inverse DFT (does the shift back first)
filtered = np.fft.ifftshift(filtered)
filtered = cv2.idft(filtered)
#normalization to be representable
filtered = cv2.magnitude(filtered[:, :, 0], filtered[:, :, 1])
cv2.normalize(filtered, filtered, 0, 1, cv2.NORM_MINMAX)
#g(x, y) = exp(s(x, y))
filtered = np.exp(filtered)
cv2.normalize(filtered, filtered,0, 1, cv2.NORM_MINMAX)
cv2.namedWindow('homomorphic', cv2.WINDOW_NORMAL)
cv2.imshow("homomorphic", filtered)
cv2.resizeWindow("homomorphic", 600, 550)
def setyl(y_track):
global yl
yl = y_track
if yl == 0:
yl = 1
if yl > yh:
yl = yh - 1
homomorphic()
def setyh(y_track):
global yh
yh = y_track
if yh == 0:
yh = 1
if yl > yh:
yh = yl + 1
homomorphic()
def setc(c_track):
global c
c = c_track/100.0
if c == 0:
c_track = 1
homomorphic()
def setd0(d0_track):
global d0
d0 = d0_track
if d0 == 0:
d0 = 1
homomorphic()
main()
我不明白我面临的问题。我该如何解决这个问题?
描述
The ideal sizes 我们可以为图像制作新的边框尺寸,在底部和右侧(无论如何都可以做到)具有恒定值。 padding之后我们可以变换到频域,然后做一个shift
同态函数随后由负责在用户更改轨迹栏时更改其参数的函数调用。轨迹条是在主函数中定义的,并带有一个限制,一个与条相关的函数和一个对应于实际值的变量。条形图按模式保持在 0-100 范围内,负责更改过滤器的参数。
最佳答案
是的,情况是 3d 而不是 2d,这里是快速解决方案:
img = cv2.cvtColor(np.float32(image), cv2.COLOR_BGR2GRAY)
dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)
关于python - (215 :Assertion failed) type == CV_32FC1 || type == CV_32FC2 || type == CV_64FC1 || type == CV_64FC2 in function 'dft' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64604533/
假设一个数字序列(波状数据)。然后我执行 DFT(或 FFT)变换。我想要实现的下一步是找到与数据中包含的实际频率相对应的频率。正如我们所知,DFT 输出具有实部和虚部 a[i] 和 b[i]。如果我
我正在尝试在频域中执行逆滤波和伪逆滤波。 但是我在访问 DFT 系数和之后乘以 DFT 矩阵时遇到问题,因为我得到了复数,因此实际上是两个矩阵...... 基本上逆向过滤执行 F = G/H, 其中
对于我的项目,我必须对大型 2D 输入矩阵进行 DFT,对其进行处理,然后使用 IDFT 将其转换回来,并将结果与输入矩阵进行比较。我的问题出在 2D DFT 步骤中。我使用一个小的简单数据集编写
我有一个场景,我必须从未知的 excel 文件和未知的选项卡中获取数据。所以我创建了一个包含 50 列的表。 问题是进入第二个循环后 ssis 包没有进展。第一个循环获取文件名,第二个循环获取该文件中
我正在尝试用 Java 编写一个小型离散傅立叶变换,以查找清晰的 400 Hz 正弦信号中的幅度谱(1 秒为 pcm 带符号短) 首先我计算复数值的 DFT: public void berechne
我们需要在 GSL 中更改/重新实现标准的 DFT 实现,即 int FUNCTION(gsl_dft_complex,transform) (const BASE data[],
注意:这个问题最初是在 OpenCV forum 上提出的几天前。 我正在构建一个广泛使用二维 dft、离散傅立叶变换的图像处理程序。我正在尝试加速以实时运行。 在该应用程序中,我仅使用由矩形 ROI
我正在编写一个非常简单的就地 DFT。我正在使用此处显示的公式: http://en.wikipedia.org/wiki/Discrete_Fourier_transform#Definition与
我试图通过 Matlab 中的 DFT(数字傅里叶变换)使用相关性来比较 2 个信号的相似程度,但相关函数给出的结果并不是真正可预测的。例如,如果我比较那两对信号: 相关性 1 和 2 相关性 3 和
更多细节:我开始写我的“学士学位论文”这将是与图像压缩相关的东西 我想知道您是否知道有任何尝试使用 PNG 格式的方波傅里叶级数(变换)作为滤波器而不是 haar 小波?会有什么好处吗? 如果您对我的
在这个 DFT 上我一直在用头撞墙。它应该打印出:8,0,0,0,0,0,0,0 但我得到的是 8,然后是非常非常小的数字。这些是舍入误差吗?有什么我可以做的吗?我的 Radix2 FFT 给出了正确
我想要质心的坐标并且我已经计算了 DFT(用于不同的目的)。我看过一些幻灯片,暗示可以通过查看矩阵的第一个值来粗略估计质心。代码基于:http://docs.opencv.org/doc/tutori
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 7 年前。 Improve t
我正在尝试对两个单独的图像进行逐点乘法傅立叶变换,然后再转换回普通图像。我不太熟悉在 OpenCV 中使用傅立叶变换,但这就是我目前所拥有的。显示输出的最后一行导致类型为“System.Runtime
我正在尝试在我的 C++ 代码中使用 FFTW3,并且我想使用 scipy.fftpack.fft 在 python 中完成同样的事情 用于真正的一维信号。我只是制作一维信号并从信号中找到频率。我不知
我正在进行一项作业,以 20kHz 的采样频率对频率为 500Hz 的方波执行 200 点 DFT,其幅度在 0 和 20 之间交替。 我正在使用 C++,我已经想出了如何编写 DFT 方程的代码,我
我最近在我的 Ubuntu 16.04 机器上重新编译了 OpenCV 3.2.0 以包含 CUDA。出于某种原因,cv::dft() 现在对特定图像大约需要 30 秒,而不是编译前的 5 秒。这是灾
我正在研究图像频率过滤的 GPU 实现。我的代码在 CPU 上运行良好(我使用了类似 this 的东西),但我花了一整天时间尝试在 GPU 上进行同样的工作——但没有成功。我想在频域中应用一个滤波器,
我创建了一个简单的积分函数和 DFT 函数,可以将它们与我编写的其他代码一起使用。 from math import sin,pi from time import time def aintegra
我使用以下代码计算图像与指定内核(在我的例子中是高斯内核)的卷积。每次我得到不同的结果,结果图像甚至不接近我在空间域中通过卷积获得的图像。首先我认为问题出在图像的数据类型上。我将它们更改为 32 和
我是一名优秀的程序员,十分优秀!