栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

OpenCV——均值滤波

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV——均值滤波

目录
  • 一、均值滤波
  • 二、C++代码
  • 三、python代码
  • 四、结果展示
    • 1、原始图像
    • 2、3x3卷积
    • 3、9x9卷积

一、均值滤波

   均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即包括目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。
   均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点 ( x , y ) (x,y) (x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点 ( x , y ) (x,y) (x,y),作为处理后图像在该点上的灰度 g ( x , y ) g(x,y) g(x,y),即 g ( x , y ) = ∑ f ( x , y ) / m g(x,y)=∑f(x,y)/m g(x,y)=∑f(x,y)/m, m m m为该模板中包含当前像素在内的像素总个数。
   均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。

二、C++代码
#include 
#include 

using namespace cv;
using namespace std;

int main()
{
	Mat img = imread("hx.jpg");
	
	if (img.empty() )
	{
		cout << "请确认图像文件名称是否正确" << endl;
		return -1;
	}
	Mat result_3, result_9; //存放滤波结果,数字代表滤波器尺寸
	
	//调用均值滤波函数blur()进行滤波
	blur(img, result_3, Size(3, 3)); // 3x3卷积核
	blur(img, result_9, Size(9, 9)); // 9x9卷积核
	
	//显示处理结果
	imshow("origion pic ", img);
	imshow("3x3 result", result_3);
	imshow("9x9 salt", result_9);
	waitKey(0);
	return 0;
}
三、python代码
import cv2

img = cv2.imread('hx.jpg')
# -------------------均值滤波------------------
img_mean_3 = cv2.blur(img, (3, 3))
img_mean_9 = cv2.blur(img, (9, 9))
# ------------------可视化结果-----------------
cv2.imshow('origion_pic', img)
cv2.imshow('3x3_filtered_pic', img_mean_3)
cv2.imshow('9x9_filtered_pic', img_mean_3)
cv2.waitKey(0)

四、结果展示 1、原始图像

2、3x3卷积

3、9x9卷积

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296595.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号