高通滤波器滤波DCT图像代码
时间: 2023-09-08 09:14:50 浏览: 161
MATLAB.rar_dct 图像_dct 滤波_dct滤波_高通滤波
以下是使用高通滤波器对DCT图像进行滤波的C++代码示例:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("input.jpg", IMREAD_GRAYSCALE);
if (img.empty())
{
cout << "Could not read the image: " << endl;
return 1;
}
Mat imgDct;
dct(img, imgDct); // 进行离散余弦变换
int thresh = 10; // 阈值
for (int i = 0; i < imgDct.rows; i++)
{
for (int j = 0; j < imgDct.cols; j++)
{
if (i < thresh || j < thresh) // 高通滤波器
{
imgDct.at<float>(i, j) = 0;
}
}
}
Mat imgIdct;
idct(imgDct, imgIdct); // 进行离散余弦反变换
imshow("Original Image", img);
imshow("High-pass Filtered Image", imgIdct);
waitKey();
return 0;
}
```
在这个示例中,我们首先读取了一个灰度图像,然后对其进行了离散余弦变换(DCT)。然后,我们使用一个阈值为10的高通滤波器将图像中的低频部分去除,然后再进行离散余弦反变换(IDCT)。最后,我们显示了原始图像和使用高通滤波器滤波后的图像。
阅读全文