先推荐界面比较丑,但是还不错的在线图片处理网站:
http://www168.lunapic.com/editor/
由于最近在做毕设了,结合前面关于图像处理和机器学习的操作,想做一些好玩的东西,其中有一部分需要构建一个模糊人脸库。一想到人脸照,大概都是超清晰的自拍(selfie)或者证件照,所以自然模糊的人脸好难找。。。
所以自己仿真。。做了一个小小的test set。。。
参杂了高斯模糊、失焦模糊、和运动模糊。。
opencv没有motion blur的filter
为了方便批量处理,写了一个小小小小的函数。。
1 cv::Mat MotionBlur(cv::Mat srcImg, int filterSize) {
2 int size = filterSize;
3 cv::Mat filter = cv::Mat::zeros(size, size, CV_8UC1);
4 cv::Mat result = cv::Mat(srcImg.size(), srcImg.type());
5 for (int i = 0; i < size; i++)filter.at<uchar>(i, i) = (uchar)1;
6 for (int i = 0; i < filter.rows; i++) {
7 for (int j = 0; j < filter.cols; j++) {
8 cout << (int)filter.at<uchar>(i, j) << " ";
9 }
10 cout << endl;
11 }
12
13 int len = size / 2;
14
15 for (int r = 0; r < srcImg.rows; r++) {
16 for (int c = 0; c < srcImg.cols; c++) {
17 //mask
18 int red = 0, green = 0, blue = 0;
19 for (int i = r - len; i <= r + len; i++) {
20 for (int j = c - len; j <= c + len; j++) {
21 if (i < 0 || j < 0 || i >= srcImg.rows || j >= srcImg.cols) continue;
22 blue += ((int)srcImg.at<cv::Vec3b>(i, j)[0]) * ((int)filter.at<uchar>(i - (r - len), j - (c - len)));
23 green += ((int)srcImg.at<cv::Vec3b>(i, j)[1]) * ((int)filter.at<uchar>(i - (r - len), j - (c - len)));
24 red += ((int)srcImg.at<cv::Vec3b>(i, j)[2]) * ((int)filter.at<uchar>(i - (r - len), j - (c - len)));
25 }
26 }
27
28 result.at<cv::Vec3b>(r, c)[0] = (uchar)(blue / size);
29 result.at<cv::Vec3b>(r, c)[1] = (uchar)(green / size);
30 result.at<cv::Vec3b>(r, c)[2] = (uchar)(red / size);
31 }
32 }
33
34 cv::imshow("motion blur", result);
35 cv::waitKey(0);
36
37 return result;
38 }
e.g.
filterSize = 9时, 角度45,矩阵如下
1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1
卷积过后还要归一化, 即 * 1/9
原文链接: https://www.cnblogs.com/cheermyang/p/6383266.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/249069
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!