OpenCv学习:模糊图像与腐蚀膨胀

第七课 模糊图像
1.模糊处理:Smooth/Blur,降低噪声,实际为卷积计算,为线性滤波
//size为窗口大小
归一化盒子滤波(均值滤波):

blur(Mat src,Mat 		  dst,Size(xradius,yradius),Point(-1,-1));

高斯滤波:

GaussianBlur(Mat src,Mat dst,Size(11,11),sigmax,sigmay);x,y必须为正奇数

2.中值滤波

统计排序滤波器:对椒盐噪声有很好的抑制作用

	//ksize必须大于1且为奇数
	medianBlur(Mat src,Mat dst,ksize)

3.双边滤波
均值滤波无法克服边缘像素信息丢失缺陷,原因是均值滤波是基于平均权重
高斯滤波部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同
高斯双边模糊是边缘保留的滤波方法,避免了边缘信息的丢失,保留了图像轮廓不变

	//15-计算的半径,如果为-1,则根据sigma space来计算
	//150-sigma color决定多少差值之内的像素会被计算
	//3-sigma space如果d的值大于0则声明无效,否则根据它来计算d值
	bilateralFilter(src,dst,d=15,150,3)

第八课 腐蚀与膨胀
图像形态学操作-基于形状的一系列图像处理操作的合集,主要是基于集合论的形态学数学
形态学四个基本操作:腐蚀、膨胀、开、闭
膨胀与腐蚀是图像处理中最常用的形态学操作手段
1.腐蚀:消除小的噪声块,底色暗,噪声块亮

	//形状(MORPH_RECT、MORPH_CROSS、MORPH_ELLIPSE)、大小(奇数)、锚点默认Point(-1,-1)意思为中心像素
	kernel=getStructuringElement(shape,Size ksize,Point anchor
	erode(src,dst,kernel)

2.膨胀:消除小的噪声块,底色亮,噪声块暗

	dilate(src,dst,kernel)

3.动态调整结构元素的大小

	TrackBar--createTrackbar(const String&trackbarname,const String winName,int*value,
	int count,TrackBarcallback func,void*userdata=0)
	eg:
	main函数中调用
	createTrackbar("Element size", "output", &element_size, max_size, CallBack_Demo);
	CallBack_Demo(0, 0);
	子函数:
	void CallBack_Demo(int, void*)
	{
		int s = element_size * 2 + 1;
		Mat kernel = getStructuringElement((MORPH_RECT),Size(s,s), Point(-1, -1));
		//dilate(src, dst, kernel,Point(-1,-1),1); 
		erode(src,dst,kernel);
		imshow("output", dst);
		return;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章