第七课 模糊图像
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;
}