OpenCV——方框滤波

x33g5p2x  于2021-10-14 转载在 其他  
字(1.6k)|赞(0)|评价(0)|浏览(307)

一、方框滤波

方框滤波是均值滤波的一种形式。在均值滤波中,滤波结果的像素值是任意一个点的邻域平均值,等于各邻域像素值之和的均值,而在方框滤波中,可以自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和。

二、C++代码

  1. #include <iostream>
  2. #include <opencv2\opencv.hpp>
  3. using namespace cv;
  4. using namespace std;
  5. int main()
  6. {
  7. //---------------------------用于方框滤波的图像--------------------
  8. Mat img = imread("1.jpg");
  9. if (img.empty())
  10. {
  11. cout << "请确认图像文件名称是否正确" << endl;
  12. return -1;
  13. }
  14. //将CV_8U类型转换成CV_32F类型,避免计算后的数据过大
  15. Mat equalImg_32F;
  16. img.convertTo(equalImg_32F, CV_32F, 1.0 / 255);
  17. Mat resultNorm, result, equalImg_32FSqr;
  18. //--------------------------方框滤波boxFilter----------------------
  19. boxFilter(img, resultNorm, -1, Size(3, 3), Point(-1, -1), true); // 进行归一化,则为均值滤波
  20. boxFilter(img, result, -1, Size(3, 3), Point(-1, -1), false); // 不进行归一化
  21. //----------------------方框滤波sqrBoxFilter()---------------------
  22. //对每个像素数值的平方求和/求均值
  23. sqrBoxFilter(equalImg_32F, equalImg_32FSqr, -1, Size(3, 3), Point(-1, -1), true, BORDER_CONSTANT);
  24. //-------------------------显示处理结果----------------------------
  25. imshow("原始图像", img);
  26. imshow("归一化", resultNorm);
  27. imshow("不归一化", result);
  28. imshow("平方和求均值", equalImg_32FSqr);
  29. waitKey(0);
  30. return 0;
  31. }

三、python代码

  1. import cv2
  2. import matplotlib.pyplot as plt
  3. # 读取图片
  4. img = cv2.imread('1.jpg')
  5. # BGR转为RGB,方便plot函数显示
  6. source = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
  7. # 方框滤波,True表示归一化,则效果与均值滤波相同。
  8. result = cv2.boxFilter(source, -1, (5, 5), normalize=False)
  9. # sqrBoxFilter实现对每个像素值的平方求和
  10. # result1 = cv2.sqrBoxFilter(source, -1, (5, 5), normalize=True)
  11. # 显示图形
  12. titles = ['Source Image', 'BoxFilter Image']
  13. images = [source, result]
  14. for i in range(2):
  15. plt.subplot(1, 2, i + 1), plt.imshow(images[i], 'gray')
  16. plt.title(titles[i])
  17. plt.xticks([]), plt.yticks([])
  18. plt.show()

四、结果展示

1、原始图像

2、归一化

3、不归一化

4、平方和求均值

相关文章