图像特征检测对于我们分析图像序列(视频)中物体移动,旋转等状态改变有非常大的作用。OpenCV中对于图像的基本角点和边缘检测的方式分为:高斯差分,Canny边缘检测器,Sobel算子和Harris角点。
边缘其实就是我们一副图片中像素亮度变化最明显的点:例如人脸和人脸之外的背景的像素亮度,发生改变的临界点的边界线。
-
高斯差分
高斯差分是最原始的图像特征检测算法,高斯差分的原理是:
1.把图片变成灰度图片
2.对灰度图片进行两次不同半径的高斯模糊,得到两个特征图像
3.将两幅高斯模糊的结果相减,得到新的特征图像
4.反转二阀值,让灰度图片边界变亮
代码流程如下:Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.gx); Mat matSrc = new Mat(); Mat matGray = new Mat(); Mat matBlur1 = new Mat(); Mat matBlur2 = new Mat(); Utils.bitmapToMat(bitmap,matSrc); Imgproc.cvtColor(matSrc,matGray,Imgproc.COLOR_BGR2GRAY); Imgproc.GaussianBlur(matGray,matBlur1,new Size(5,5),3); Imgproc.GaussianBlur(matGray,matBlur2,new Size(11,11),3); Mat resul