ZBLOG

先进行低频滤波再进行高频增强

如果您想先进行低频滤波,再对图像进行高频增强,可以按照以下步骤实现:

  1. 低频滤波:可以使用高斯模糊(Gaussian Blur)来去除图像中的高频噪声。这个过程将平滑图像并保留主要的轮廓信息。

  2. 高频增强:在此基础上,使用拉普拉斯算子提取高频部分,并将其与低通滤波后的图像相结合。

以下是代码示例:

  1. #include <opencv2/opencv.hpp>
  2. #include <iostream>
  3. using namespace cv;
  4. using namespace std;
  5. int main() {
  6. // 读取输入图像
  7. Mat image = imread("Data/img_test_out/1.第一面正视图/1-1.bmp", IMREAD_GRAYSCALE);
  8. if (image.empty()) {
  9. cerr << "Error: Could not open or find the image!" << endl;
  10. return -1;
  11. }
  12. // 进行低频滤波(高斯模糊)
  13. Mat lowPassImage;
  14. GaussianBlur(image, lowPassImage, Size(5, 5), 0);
  15. // 创建输出图像用于存储拉普拉斯结果
  16. Mat laplacianImage;
  17. // 应用拉普拉斯算子获取高频信息
  18. Laplacian(image, laplacianImage, CV_16S, 3);
  19. // 转换为可显示的8位格式
  20. Mat absLaplacianImage;
  21. convertScaleAbs(laplacianImage, absLaplacianImage);
  22. // 增强高频部分(将原始图和拉普拉斯结果相加)
  23. Mat enhancedImage;
  24. double alpha = 0.5; // 低频权重(原始平滑图权重)
  25. double beta = 0.5; // 高频权重(可调节)
  26. addWeighted(lowPassImage, alpha, absLaplacianImage, beta, 0, enhancedImage);
  27. // 显示结果
  28. imshow("Original Image", image);
  29. imshow("Low Pass Image", lowPassImage);
  30. imshow("Laplacian Image", absLaplacianImage);
  31. imshow("Enhanced Image", enhancedImage);
  32. // 保存输出(可选)
  33. imwrite("enhanced_image.bmp", enhancedImage);
  34. waitKey(0); // 等待按键
  35. return 0;
  36. }

分析

  1. 低频滤波: 使用 GaussianBlur() 函数对输入图像进行模糊处理,以获得较为平滑的版本。Size(5, 5) 指定了卷积核的大小,您可以根据需要调整。

  2. 提取高频信息: 使用 Laplace() 提取边缘或细节。通过将其转换为绝对值形式,得到可显示的8位格式。

  3. 加权合成: 使用 addWeighted() 将低通和经过增强的高通部分组合在一起。在这里,通过调整 alphabeta 值,可以控制最终效果。

  4. 显示和保存结果: 最后,通过 OpenCV 的 imshow() 显示每个阶段的结果,并且可以选择性地保存增强后的图像。

调整建议

  • 您可以试着调整模糊参数、卷积核大小以及加权系数,以便获得理想效果。
  • 尝试不同类型的低通滤波器,如均值滤波或中值滤波,根据具体情况选择最适合的方法。

如果还有其他问题或需求,请随时问我!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20910

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?