关于使用机器视觉技术实现图片加马赛克的网络调研报告

阅读: 评论:0

关于使用机器视觉技术实现图片加马赛克的网络调研报告

关于使用机器视觉技术实现图片加马赛克的网络调研报告

电子科技大学 格拉斯哥学院 2017级 任欣宇

 

 

基于OpenCV的马赛克实现方案

 

在新生研讨会上,曾院长生动地向我们介绍了图像处理的相关技术,包括视频防抖技术,基于图像识别技术的照片处理等,我便对其中的图像识别技术产生了极大的兴趣,然后产生了对市面马赛克技术的思考

1. 市面上的马赛克技术的原理及实现。

2. 市面上的逆马赛克技术的原理及实现。

经过近7天的网络资料与实体资料查询整理后,我得出如下报告:

 

马赛克技术背景

马赛克指现行广为使用的一种图像(视频)处理手段,此手段将影像特定区域的色阶细节劣化并造成色块打乱的效果,因为这种模糊看上去有一个个的小格子组成,便形象的称这种画面为马赛克。其目的通常是使之无法辨认。 

就用RGB来举例子,R(red红色),G(green绿色),B(blue蓝色)。这三种颜色每种都有0~255范围内的强度值,数字越高越亮,例如,亮红色使用 R 值 255、G 值 0 和 B 值 0,有色光可被无色光冲淡并变亮。如蓝色光与白光相遇,结果是产生更加明亮的浅蓝色光。所以R、G、B的值的不同来混合颜色

 

技术实现

在实际应用中,我们利用矩阵代表图片中的RGB指数,使图片中的RGB参数向量化,再利用OpenCV对图像矩阵进行变换,利用周围的颜色进行混淆成为新色,再对原来的颜色进行覆盖,此实验中,我们使用图像的周围颜色填充马赛克颜色,再规定每个马赛克大小,对于鼠标点过的区域进行设计的马赛克覆盖,实现图片的加码。下为实际操作代码

 

OpenCV实现为图片添加马赛克功能:

#include <opencv2corecore.hpp>
#include <opencv2highguihighgui.hpp>
#include <opencv2imgprocimgproc.hpp>
#include <iostream>using namespace cv;
using namespace std;Mat inputImage;
Mat inputImage_mosaic;
Mat inputImage_clone;//马赛克的范围
int neightbourhood = 20;//记录鼠标的状态,1为鼠标左键按下,0位松开状态
int mouseStatus = 0;void onMouse(int events, int x, int y, int flag, void* ustg);//创建马赛克
void createMosaicImage(Mat inputMat, Mat& outputMat, int size);//设置马赛克区域
void setMosaic(Mat& inputMat, Rect rect);int main(void){inputImage = imread("test2.jpg");inputImage_clone = inputImage.clone();createMosaicImage(inputImage, inputImage_mosaic, neightbourhood);namedWindow("showImage", 0);setMouseCallback("showImage", onMouse);waitKey();return 0;
}void createMosaicImage(Mat inputMat, Mat& outputMat, int size){RNG rng;int height = ws;int width = ls;Mat padding;Mat tempMat;//为了方便后面的计算,将输入的图像大小扩充到宽高都是size的倍数copyMakeBorder(inputMat, padding, 0, size - ws % size, 0, size - ls % size, BORDER_REPLICATE);tempMat = padding.clone();for (int row = 0; row < ws; row += size){for (int col = 0; col < ls; col += size){int rand_x = rng.uniform(0, size);int rand_y = rng.uniform(0, size);Rect rect = Rect(col, row, size, size);Mat roi = tempMat(rect);Scalar color = Scalar(padding.at<Vec3b>(row + rand_y, col + rand_x)[0], padding.at<Vec3b>(row + rand_y, col + rand_x)[1], padding.at<Vec3b>(row + rand_y, col + ran

本文发布于:2024-02-02 15:40:35,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170685963444776.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:马赛克   调研报告   视觉   机器   图片
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23