编软件去除照片的背景图像

zhaohongbin 2003-09-11 11:49:01
我需要把一个照片上的背景去掉,换上我们自己的背景。照片是一个人站在一个单色布景(如蓝颜色布景)前照的,现在要把照片上的单色布景去掉,即把人的图像取出,再贴到我们事先准备好的背景图像上去。 现在的难点是怎么把图像的单色背景去掉?需要源程序、算法及相关资料!
请注意:
1. 背景肯定是不均匀的。
2. 背景颜色不是固定的,有的是蓝色,有的可能是别的颜色,事先是不知道的。
3. 完全自动处理,不能由人工指定图像中的某个点作为背景颜色,必须自动识
别 出背景颜色。
4. 由软件自动完成上述功能,不是人工用photoshop之类的工具去作。
5. 最好是能够实时的,处理速度不需要太高,每秒处理3至5帧图像即可。
6. 这个处理过的图片要放到新的背景图像中去,合成一个新的照片。
...全文
747 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zplinze 2003-10-10
  • 打赏
  • 举报
回复
如果在转换成灰度图后人的区域边界(注意是边界!)和背景灰度值相差较大的话,在域值分割后,基本能区分出人的区域边界吧?但是在这块区域内有很多很杂黑点,这些就是被当成背景色的前景色。
如果这些“噪声”比较细小,可以通过膨胀运算将其去掉。就像下面这幅图的最后两幅一样
http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/chapter08/dilation.gif
如果这些噪声比较大,得另想办法了,我们再好好想想,呵呵
zhaohongbin 2003-10-10
  • 打赏
  • 举报
回复
to zplinze(linze) :

你的思路非常好。但有一个问题,把彩色图像转成灰度图像后,原来在彩色图像中有明显区别的某些颜色在灰度图像中会变得颜色值非常接近,尤其是和背景色接近时就非常难办了。我试者作了域值分隔,但不管如何选择域值,都会有很多前景色都被当成了背景色,效果不够好,不能达到实用的程度。
zplinze 2003-10-08
  • 打赏
  • 举报
回复
我的想法是,可以先把图像转化为灰度图,然后做阈值分割,最后将图像转换成二值图像,背景是纯黑色的,而人的选区部分是白色的。以这个图像做为模板,就可以取出输入图像的人的选区了。
当然最好还得知道输入图像的一些特征了,比如人和背景的对比度如何?是否容易区分?否则就得做成自适应滤波器了,呵呵。
我的基本思路:
在得到输入图像的时候,转化为灰度图。计算它的统计特征,得到它的直方图。也就是统计每个灰度级出现的概率,此时可以将出现概率较高的几个灰度级做为背景的灰度值。根据背景的灰度值和其他灰度值选取合适的阈值,做阈值分割。此时图像背景为黑色,人的部分为白色,就得到了需要选区。分割后可能会有些噪声。对图像进行中值滤波,或者做一下膨胀运算,就可以把噪声去掉,同时可使选区边缘变得平滑。然后以这个选区为模板,分别取出人和背景就可以了
play00505 2003-10-07
  • 打赏
  • 举报
回复
我也正在做这方面的软件,我用神经网络的BP前溃算法的,就是先取前景,背景N各样本点,进行网络训练,然后对图片的每个象素点经过网络判别前景和背景,是可以动态改变背景的
rwdx 2003-10-07
  • 打赏
  • 举报
回复
这样的效果并不完全是用软件完成的,
YUGIBALSA 2003-10-07
  • 打赏
  • 举报
回复
不好意思,我看错了,认为楼主的想法中的"背景肯定是不均匀的。"意思是"背景是什么都不一定"

楼上几位的说法都是可行的,我看过很多人作过,其实也不会太难,楼主最好自己想想

SORRY
lizexia 2003-09-29
  • 打赏
  • 举报
回复
可不可以将你的源程序给我一份,我也在琢磨这个问题!谢谢!

lizexia@ns.lzb.ac.cn
zhaohongbin 2003-09-18
  • 打赏
  • 举报
回复
to : thirdapple(陨落雕)
如果是靠单纯判断颜色,图像处理也不会形成独立的一门学科了。
thirdapple 2003-09-16
  • 打赏
  • 举报
回复
本来就是单纯判断颜色,楼主想复杂了.
zhaohongbin 2003-09-15
  • 打赏
  • 举报
回复
我想要完成这样的功能,必须使用图像处理中的某些算法(如小波分析等),单纯判断图像的颜色值肯定是不行的。
zhaohongbin 2003-09-15
  • 打赏
  • 举报
回复
to :YUGIBALSA(龙荃)
这并不是妙想天开,你没见过电视电影特技中的画面合成吗?主持人可以在兰背景前主持节目,而输出给观众看的画面却是主持人在一个具有美丽风景为背景的环境中主持节目。
photoshop之所以没有作这样的功能,主要是因为photoshop是用来编辑/制作真正的照片的,这样的照片通常是在人们真正需要留念的地方拍摄的,这样的背景通常不是一个单色的布景。难道你没事了会找一个单色的布景来照相吗?
zhaohongbin 2003-09-15
  • 打赏
  • 举报
回复
to:RamjetZhang(我曾经不是一头猪)

我曾经编程对源图像进行处理,把每个点的颜色分解为RGB三个值,同假定的背景色(如左上角的第一个点)进行比较,三种颜色同背景的三种颜色的差值的绝对值之和小于某个值(如80)则认为是背景色。但这样作的效果仍然不好,距离实用的阶段还差的太远。
至于做完的图像的透明部分,可以保存为纯白色或纯黑色,因为实际照片里出现纯白色或纯黑色概率非常小。
RamjetZhang 2003-09-13
  • 打赏
  • 举报
回复
你必须保证背景色彩在一定阈值以内(也就是说背景布要够干净);人像不能有与背景近似颜色--至少在边缘区域(就好象用红背景就少带红领巾,穿红衣服).
然后假定左上角是clean的,以此附近取样为背景色,对整个图像中在阈值(一般取32 ,不知道彩色应该怎么算)内的 色彩clean掉(基本照搬photoshop的magicwand).
有个问题:做完的图像你们怎么保存(对透明区域的处理?)
lxpbuaa 2003-09-13
  • 打赏
  • 举报
回复
YUGIBALSA(龙荃) :
你又少见多怪了吧,这并不是什么难事。每个人不会的东西多了去了。

—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
thirdapple 2003-09-13
  • 打赏
  • 举报
回复
扫描出现频率最高的颜色,然后+ -一个阀值来过滤,OK
YUGIBALSA 2003-09-13
  • 打赏
  • 举报
回复
这年头妙想天开的人真多,如果可以这样做PHOTOSHOP早就做了。
PhilexPei 2003-09-13
  • 打赏
  • 举报
回复
需要算法支持吧。关注
cnssk 2003-09-13
  • 打赏
  • 举报
回复
gz
lxpbuaa 2003-09-13
  • 打赏
  • 举报
回复
最简单的办法就是通过:
TCanvas.Pixels[X, Y: Integer]: TColor;
扫描整个图片,如果该点是背景色,则置为新背景色。

—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
【RT-Thread作品秀】写字机器人作者:乔城阳 概述(说明应用产生的背景、实现功能)写字机器人在实际生产线上由于效率赶不上打印机,应用不是很广,然而由于其结构简单,成本低,并且符合人手写风格,在学习阶段很有价值。写字机器人设计上包含了路径规划、直线插补、加减速控制等常用电机运动控制算法,在软件上也会用到DXF文件解析、openCV图像处理等G代码生成工具,对后期深入研究激光切割机、雕刻机、3D打印机等大型设备有很好的铺垫作用。因此我的作品以写字机器人为题目分享我的制作过程和学习体验,希望对各位小伙伴的学习有所帮助。 开发环境(所采用的软、硬件方案)硬件:ART-PI、arduino、TM4C123GXL RT-Thread版本:3.14 开发工具及版本:MDK-ARM5.31、VSCode RT-Thread使用情况概述(简要总结下应用中RT-Thread使用情况:内核部分、组件部分、软件包部分、内核、其他)内核部分:线程调度,资源分配、同步通信、设备驱动框架 组件:DFS文件系统、UART串行异步通信、CAN通信 其他:UDP通信、cJSON解码 硬件框架(概述应用所采用的硬件方案框图,并对核心部分做介绍)软件框架说明(介绍应用所采用的软件方案框图、流程图等,并加以解说)在写字机器人设计上我将其分为三个部分: 图像处理模块 运动控制模块 G代码生成模块 图像处理模块负责把文本图像和照片等图像文件做预处理,去除杂点,然后以合适的算法将图像二值化,突现主要信息,然后提取轮廓骨架以适合机器书写。 G代码生成模块将图像轮廓序列化后进行路径规划,选取一个适合的加工精度,然后按数控加工常用的G代码规范生成NC加工文件。另外对于标准的DXF文件则通过文件解析的方法生成G代码。 运动控制模块是写字机器人中最杂的一个模块,负责各个运动机构的精准快速移动。收到G代码指令后需要结合前后指令信息生成当前指令的合适初速度、最大运行速度,根据运动轨迹进行直线插补点,最后按SPTA梯形加减速算法向电机发出脉冲。 软件模块说明(介绍应用软件关键部分的逻辑、采用的实现方式等)Grbl是一种高性能低成本的开源CNC控制器,基于ATmega328型芯片输出高速精准的电机控制脉冲,完美支持各种标准G代码,并包含了完整的前瞻性加速控制,可以实现平稳的加速和无冲击的转弯动作。 正是由于grbl的前瞻性速度控制功能,所以要保证grbl控制器内一直保持着16-20个G代码指令。这需要ART-PI通过读取grbl控制器缓冲区状态,及时发送G代码指令,避免出现缓冲溢出和缓冲区为空等现象出现。 因此需要运行RT-thread实时操作系统,通读读取SD卡上的NC文件,并与grbl控制器通信,控制设备正常运行。另外RT-thread也可提供丰富的人机交互功能,将设备工作路径、进度等状态实时显示在屏幕上,也可以增加暂停续写等功能。 演示效果(演示效果请采用3张高清图片,并录制一段不少于1min视频解说应用所实现的效果,视频上传至B站或者腾讯视频或其他视频平台,给出链接即可)演示视频 比赛感悟同样是C代码,为什么别人写得那么好,这次比赛用到两个开源软件,一个是RT-thread,负责人机交互和发送控制指令,另一个是grbl,用来完成运动控制。两款软件都设计的非常精巧,只需在2kB大小的RAM上运行,而功能却又非常强大,实现了很多复杂的功能,所有的代码封装的很好,模块启用只需打开对应的宏定义即可。这次专门去图书馆借阅了RTT相关的图书,了解线程是如何调度,设备驱动应该怎么实现,但是内部还是有很多内容不理解,后期需要继续不断充实自己。运动控制一直是我的兴趣所在,这次也终于有机会把它实现,看着电机在一行行指令的控制下乖乖地转动,听着不断变化着频率的电机声音,真正体会到了伺服servo的含义,非常开心~

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧