JavaCV 图像修复-小学cvInpaint 算法
来源:互联网 发布:模拟男朋友的软件 编辑:程序博客网 时间:2024/05/16 14:39
OpenCV 图像修复
小学cvInpaint 算法
一、效果
第一组 使用自动扫描修复的
第二组 使用模板(对应破坏图像)扫描修复的
图片从左至右依次123(如果三个图片不在一排,那么有个图片在下面是由于被挤压了。)
1.原图
2.被破坏的图片
3.被cvInpaint 修复过的图片
修复模板
不多说,上程序
---------------------------------------------------------------------------------
自动修复代码
/** * 图像修复 * 使用自动扫描白色图像方式 * * @param imageSrc * @return IplImage */public IplImage inpaintingByBlank(IplImage imageSrc) {//修复范围double range = 50;//获取灰度IplImage grey = convertImageToGreyscale(imageSrc);//创建模板IplImage mark = cvCreateImage(cvGetSize(grey), IPL_DEPTH_8U, 1);//膨胀算法cvDilate(grey, mark, null, 2);//图像二值化-获得修复区域cvThreshold(mark, mark, 253, 255, CV_THRESH_BINARY);//目标图像IplImage dist = cvCreateImage(cvGetSize(imageSrc), IPL_DEPTH_8U, 3);//修复cvInpaint(imageSrc, mark, dist, range, CV_INPAINT_TELEA );return dist;}
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
模板修复代码
/** * 图像修复 * 使用指定模板的方式 * * @param imageSrc 图片源 * @param imageSrc 修复模板-需要修复的区域图 * @return IplImage */public IplImage inpainting(IplImage imageSrc, IplImage mark) {//修复范围double range = 50;//模板灰度化mark = convertImageToGreyscale(mark);//膨胀白色区域cvDilate(mark, mark, null, 2);//二值化cvThreshold(mark, mark, 253, 255, CV_THRESH_BINARY);//目标图像存储对象IplImage dist = cvCreateImage(cvGetSize(imageSrc), IPL_DEPTH_8U, 3);//进行修复cvInpaint(imageSrc, mark, dist, range, CV_INPAINT_TELEA );return dist;}
---------------------------------------------------------------------------------
1. 仔细比对自动扫描修复和模板修复的方式,区别很明显。自动扫描并没有模板修复精确,适合图像破坏得很复杂的环境。而精确修复可以定位只修复某一一个部分。
2. 所谓自动扫描,就是制定需要修复图像的颜色特征,通过二值化分离出来,通过膨胀的方式,让被修复的区域更加明显,这样就扫描出了被修复的区域。(具体的过滤方法,需要配合OpenCV其他的知识来实现,由于具体的分离方式不同,种类繁多,在此不做阐述。)
3. 所谓模板修复,就是使用指定的模板图像来进行修复,如果模板图像不是纯黑白,也需要对模板图像进行膨胀和二值化处理。
cvInpaint方法解说:
第一个参数:被处理的源图像
第二个参数:黑底色,白色被处理区域的模板图像
第三个参数:生成后的图像的存放对象,需要和源图像一样大小。
第四个参数:修复算法
第一个参数:被处理的源图像
第二个参数:黑底色,白色被处理区域的模板图像
第三个参数:生成后的图像的存放对象,需要和源图像一样大小。
第四个参数:修复算法
由于本人开发使用的是JavaCV 0.7版本,提供的方法,并不是完全符合面向对象原则的,所以以后的版本可能会对方法进行修改。当然牛逼的人物一般会自己封装掉。
0 0
- JavaCV 图像修复-小学cvInpaint 算法
- opencv图像修复算法cvInpaint(Telea的FMM算法)
- OpenCV编程->图像复原(cvInpaint)
- OpenCV编程->图像复原(cvInpaint)
- 图像二值化---java+javaCV
- OpenCV中的图像修复算法
- OpenCV中的图像修复算法
- javacv小demo--读写图像
- Javacv调用摄像头采集图像
- ColorMatrix (图像小学...)
- BSCB 图像修复算法 Matlab 仿真-(2000)
- 一种莫名的图像修复算法
- javacv
- javacv
- JavaCV
- Windows下JavaCV获取摄像头图像
- JavaCv 高效实现图像的遍历
- javacv 颜色识别&&拍照&&剪裁&&图像旋转
- ListView中含有Button时setOnclickListener应写在Adapter的什么地方
- 易启秀20150629完整包微场景制作源码,新增1.4G素材包,全新后台UI设计+采集
- leetcode:Contains Duplicate III
- 固件与驱动
- $( function() {} );和$( function($) {} );和( function($){} )(jQuery);的异同
- JavaCV 图像修复-小学cvInpaint 算法
- android中。makefile和.mk文件简单介绍
- 局部变量、全局变量、静态变量
- koa使用之node.js 文件加密与解密
- jQuery Mobile
- GAAnimationGroup动画组
- IntelliJ IDEA 14 注册码
- 从零使用OpenCV快速实现简单车牌识别系统
- 移植 Laravel 核心组件:如何给 TP3.1 用上 IoC 容器 (一)