Opencv图像预处理(三)
blur(均值滤波)
一种常用的图像平滑处理方法,通过将像素的领域内像素值取平均来减少图像中的噪声,从而达到图像平滑的效果,图像会更模糊。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;
namespace _03_blur_均值滤波_
{
internal class Program
{
static void Main(string[] args)
{
Mat scrImage = Cv2.ImRead(@"F:\AI视觉23班\06_OpenCV\images\girl3.jpg");
Cv2.ImShow("原图", scrImage);
//定义一个矩阵,接收Blur() 函数处理之后的图像
Mat dstImage =new Mat();
//参数1:输入的图像
//参数2:输出的图像
//参数3:卷积核大小
Cv2.Blur(scrImage, dstImage, new Size()
{
Width=10,
Height=10
});
Cv2.ImShow("效果", dstImage);
Cv2.WaitKey(0);
}
}
}
高斯滤波
高斯滤波是一种线性平滑滤波器,它利用高斯函数对图像进行加权平均,可以有效地去除高斯噪声,同时平滑图像。
Cv2.GaussianBlur(srcImage, dstImage4, new Size(3, 3));
课外扩展:https://www.jianshu.com/p/525ca85dad4e
图像腐蚀与膨胀
腐蚀:形态学操作,用于缩小图像中的亮区域,同时扩展暗区域(像素值较小的区域)。原理是在图像上滑动结构元素,将结构元素覆盖区域内的像素设置为最小像素值。腐蚀操作可以消除小的噪声、分割相连的区域,并改变区域的形状。
膨胀:形态学操作,用于扩展图像中的亮区域(像素值较大的区域)。它的原理是在图像上滑动结构元素,将结构元素覆盖区域内的像素设置为最大像素值。膨胀操作可以增加亮区域的大小,填充小的空洞,以及连接相邻的区域。
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _04_图像腐蚀与膨胀
{
internal class Program
{
static void Main(string[] args)
{
Mat scrImage = Cv2.ImRead(@"F:\AI视觉23班\06_OpenCV\images\girl3.jpg");
Cv2.ImShow("原图", scrImage);
//定义一个矩阵,接收Blur() 函数处理之后的图像
Mat dstImage = new Mat();
//创建腐蚀/膨胀的形状
//参数1:枚举类型 定义创建的区域形状
//MorphShapes.Rect 矩形
//MorphShapes.Ellipse 椭圆
//MorphShapes.Cross 十字形
Mat elem = Cv2.GetStructuringElement(MorphShapes.Cross, new Size() { Width = 15, Height = 15 });
//腐蚀
//参数1:输入图像
//参数2:输出图像
//参数3:腐蚀的形状和大小
//参数4:腐蚀的中心点(可选参数,默认值是图像的中心点)
//参数5:扩展的方式(可选参数)
//参数6:扩展填充的值(可选参数)
// Cv2.Erode(scrImage, dstImage, elem);
//膨胀 参数与腐蚀相同
Cv2.Dilate(scrImage, dstImage, elem);
Cv2.ImShow("效果", dstImage);
Cv2.WaitKey(0);
}
}
}
开运算闭运算
开运算:先进行腐蚀操作,然后进行膨胀操作。通常用于去除小的噪声点。
Cv2.MorphologyEx(输入图像, 输出图像, MorphTypes.Open,操作的形状);
闭运算: 先进行膨胀操作,然后进行腐蚀操作。通常用于填充小的空洞。
Cv2.MorphologyEx(srcImage, dstImageClose, MorphTypes.Close, element);