一.滤波:提出图像中不必要的频率段,用于防止或抑制干扰。
1.线性滤波:方框滤波,均值滤波(与方框滤波很相似),高斯滤波
2.非线性滤波:中值滤波(模糊程度最大),双边滤波(处理后与原图很相似)
二.图像深度:表示像素点取值范围的位数。
1bit:说明像素点取值为0和1,也是说图像只能时黑白两种颜色;
24bit:最常见的RGB三通道,24 = 3*8;每个像素取值范围为[0,2*24);每个通道占8bit,及[0,255),
所以RGB表示像素为(R,G,B)即((0-255),(0-255),(0-255))
三. 膨胀(dilate)与腐蚀(erode)
1.dilate:求局部最大值,在opencv中会扩大白色高亮部分的面积,腐蚀与之相反
四。边缘检测:识别图像中变化明显的特征,一般根据阙值进行舍弃与选取像素点
canny边缘检测
int main(int argc, char *argv[])
{
Mat img = imread("../1.jpg", 1);
if (!img.data) { printf("Oh,no,读取img图片文件错误~! \n"); return -1; }
namedWindow("【1】原画");
imshow("【1】原画", img);
auto src = img.clone();//拷贝一份原图像
Mat dst,edge,gray;
dst.create(src.size(), src.type());//设置目标图像与原图像同类型和大小的矩阵
//高级边缘检测过程
//
//1.将原图转换为灰度图像
cvtColor(src, gray, COLOR_BGR2GRAY);
imshow("第一步,原图像转换为灰度图像", gray);//去掉彩色效果的图,但不是黑白图
//2.降噪
blur(gray, edge, Size(3, 3));
imshow("第二步,灰度图降噪", edge);//降噪之后的图,略显柔和
//3.运行canny算子
Canny(edge, edge, 3, 9, 3);
imshow("使用算子得到的边缘图edge", edge);//边缘线
//dst像素设置为0
dst = Scalar::all(0);
imshow("全为0的dst", dst);//全为黑色的图
//将canny算子输出的边缘图作为掩码,来将原图拷贝到dst中
src.copyTo(dst, edge);
imshow("最终效果图", dst);//彩色的边缘检测图
waitKey(0);
return 0;
}
五。霍夫变换:识别线,直角坐标系中每个点,对应仿射坐标系中一条三角曲线
1)霍夫线变换
2)霍夫园变换
六。重映射:把图像中某一个位置的像素放到另一个图像指定位置
七。仿射变换:实现图像的旋转,平移,缩放