智能去除选定区域
2011-12-23 15:20
204 查看
这篇文章缘起于这篇博客:http://xiaoxia.org/2011/12/03/shocked-by-gimp-filter-smart-remove-selection/
看完以后着实震惊了,这下要去掉照片里的东西实在太简单了。在群里吼了一声以后,美术表示Photoshop CS5很淡定。于是我找来了Photoshop CS5 (PS CS5)教程 看看,大约9分钟的时候,CS5潇洒地P掉了背景中的一个人,神奇了!
这项工作原来是要靠人手完成的,自己选取一块相近的纹理,通过PS的图章工具补上去,但是人手补上的话会有个问题,一个是纹理不对,一个是光线不对,反映在图上就是修补的区域没有过渡,变成很生硬的一块。
而通过软件完成这项工作,不仅大大节省了时间,而且效果与人手修补毫不逊色,比我本人ps更是好的多了XD
于是找来了resynthesizer源码分析,似乎最关键的就是以下这段代码:
这段代码是GIMP的resynthesizer插件进行取样的过程,取样最特别的地方,在于对自身进行复制,形成一段纹理。具体的工作原理,可以参考作者的论文:《A NON-HIERARCHICAL PROCEDURE FOR RE-SYNTHESIS OF COMPLEX TEXTURES》
我简略地翻译一下概要:
“这篇文章主要描述了如何利用给定输入图像,以其纹理合成一幅新的图像。输出图像来源于原图的部分像素,通过特定顺序相继添加而合成。使用的像素,是在输入的图像中,与输出图像的纹理最为接近的。实验表明,对输入纹理的精确重现,取决于将像素添加到输出图像的顺序。同时,这篇文章描述了如何选择一个合适的顺序,以复制一个复杂庞大的特征到输出图像。”
再看photoshop CS5,里面有个关键词,content aware, 这个概念可以参考这篇文章:http://dl.acm.org/citation.cfm?id=1276390 不过毕业以后就看不到ACM的全文了。。。content aware的神奇之处,在于不仅根据几何形状,还根据图像中的能量进行识别。至于能量函数,abstract里说的很抽象,印象中是利用图像中的熵这类东西解决的。所以,PS CS5的智能去除,应该是通过content aware的SEAM将目标物盖住吧,可惜ps没有开源,没办法得到确切答案了。
看完以后着实震惊了,这下要去掉照片里的东西实在太简单了。在群里吼了一声以后,美术表示Photoshop CS5很淡定。于是我找来了Photoshop CS5 (PS CS5)教程 看看,大约9分钟的时候,CS5潇洒地P掉了背景中的一个人,神奇了!
这项工作原来是要靠人手完成的,自己选取一块相近的纹理,通过PS的图章工具补上去,但是人手补上的话会有个问题,一个是纹理不对,一个是光线不对,反映在图上就是修补的区域没有过渡,变成很生硬的一块。
而通过软件完成这项工作,不仅大大节省了时间,而且效果与人手修补毫不逊色,比我本人ps更是好的多了XD
于是找来了resynthesizer源码分析,似乎最关键的就是以下这段代码:
/* Setup */ make_offset_list(); for(int i=0;i<256;i++) for(int j=0;j<256;j++) diff_table[i][j] = (i-j)*(i-j); for(int i=0;i<int(data_points.size());i++) { int j = rand() % data_points.size(); Coordinates temp = data_points[i]; data_points[i] = data_points[j]; data_points[j] = temp; } for(int n=data_points.size();n>0;) { n = n/2; // <- note magic number... the more repetition, the higher the quality, maybe for(int i=0;i<n;i++) data_points.push_back(data_points[i]); }
这段代码是GIMP的resynthesizer插件进行取样的过程,取样最特别的地方,在于对自身进行复制,形成一段纹理。具体的工作原理,可以参考作者的论文:《A NON-HIERARCHICAL PROCEDURE FOR RE-SYNTHESIS OF COMPLEX TEXTURES》
我简略地翻译一下概要:
“这篇文章主要描述了如何利用给定输入图像,以其纹理合成一幅新的图像。输出图像来源于原图的部分像素,通过特定顺序相继添加而合成。使用的像素,是在输入的图像中,与输出图像的纹理最为接近的。实验表明,对输入纹理的精确重现,取决于将像素添加到输出图像的顺序。同时,这篇文章描述了如何选择一个合适的顺序,以复制一个复杂庞大的特征到输出图像。”
再看photoshop CS5,里面有个关键词,content aware, 这个概念可以参考这篇文章:http://dl.acm.org/citation.cfm?id=1276390 不过毕业以后就看不到ACM的全文了。。。content aware的神奇之处,在于不仅根据几何形状,还根据图像中的能量进行识别。至于能量函数,abstract里说的很抽象,印象中是利用图像中的熵这类东西解决的。所以,PS CS5的智能去除,应该是通过content aware的SEAM将目标物盖住吧,可惜ps没有开源,没办法得到确切答案了。
相关文章推荐
- 利用OpenCV找到图片中的乒乓球,返回球的圆心及半径,去除图片中非感兴趣区域
- 让文档某一块区域 智能浮动
- AD15 修改铺铜(去除自己不想要的铺铜区域)
- java-BufferedImage 图片验证码去除干扰线的方法( 用于OCR tesseract图像智能字符识别)
- PNG图片去除额外透明区域
- 反选EXCEL数据区域已选定的单元格
- OpenCV入门:ROI感兴趣区域(鼠标事件选定区域)
- Win7通知区域的图标怎么去除?
- excel快速选定特定区域
- OPENCV二值化图像内孔洞填充/小区域去除
- 粒子滤波器之建立选定区域直方图(histo_bin())
- 反选EXCEL数据区域已选定的单元格
- 快速删除选定区域数据
- 图表控件chartingToolkit去除图例说明区域以及数据点的样式定义
- OPENCV去除小连通区域,去除孔洞的实例讲解
- Windows无法连接到选定网络,网络可能不在区域中。请刷新可用网络的列表,重新尝试
- css去除<img>图片下多余空白区域
- 智能手机应用去除返回键
- opencv鼠标选定感兴趣区域进行目标检测
- echart 去除网格线及其区域内颜色