erj*_*jik 2 opencv fft image-processing
我希望将频域滤波器(例如低通或带通)应用于图像的每条水平线.这可能使用opencv吗?
我认为你需要详细说明你的问题.或许,举一些具体的例子.
如果我将您的问题解释为:
你有一个10 x 10的图像
第1行
第2行
第3行......
第10行
您想要在这些线路上独立应用一些滤波器(低通/带通).
然后,首先你需要设计你的水平过滤器(你想要的任何工具).
让我们假设(不失一般性)你有2个过滤器:
低通:1x10图像
带通:1x10图像
然后,您可以使用cv :: dft将这些过滤器转换为频域.还可以使用cv :: dft将图像转换为频域.当然,您应该单独转换单个行.一种方法是:
cv::Mat im = cv::imread('myimage.jpg', 1);
cv::Mat one_row_in_frequency_domain;
for (int i=0; i<im.rows; i++){
cv::Mat one_row = im.row(i);
cv::dft(one_row, one_row_in_frequency_domain);
// Apply your filter by multiplying
}
Run Code Online (Sandbox Code Playgroud)