问题描述
要作一个识别船舶尺寸的项目,需要从两张图片中将船舶识别出来,两张图片拍摄角度相同,一张是有船的,一张是没有船的,需要将两张图片相减把航道背景消除,只剩下船体,要怎样操作啊?急求帮助啊
解决方案
解决方案二:
说起来简单做起来难,这需要人工智能算法吧
解决方案三:
这个说说容易,电脑完成,有难度呀!!智能性要求太高,帮顶一下吧
解决方案四:
这个很复杂。涉及到如何判断船体轮廓,如何判断光明暗不同时的像素颜色。如何去除噪点等等等等很高深的算法。
解决方案五:
提供个思路,你试下Bitmap.GetPixel(x,y)这个函数,把两张图片的点一个一个比较,如果相同的就把这个点变为白色,如果不同的话,就把这个点留下来,只是这样想,没经过实践,楼主可以试试
解决方案六:
我只是帮顶一下
解决方案七:
这个东西不要在这里问,应该找专门搞图像识别算法的人去弄
解决方案八:
网上找下Emgu(或者OpenCV也行)相关的文章,里边有你想要的图像相减算法Emgu.CV.Image<Gray,byte>Image1;Emgu.CV.Image<Gray,byte>Image2;Emgu.CV.Image<Gray,byte>Image3=Image1.AbsDiff(Image2);(Image3是Image1和Image2相减后的图像,一般用于消除背景)
解决方案九:
图片的像素值相减呗,然后判断像素值大于一定值的就行了,多看看图像识别
解决方案十:
你为什么要申请这么多ID来问问题而且每次问题的标题都有"小女子"3个字......
解决方案十一:
我好冤啊,我第一次在这里问问题,还不知道怎么玩这个论坛呢引用9楼diaodiaop的回复:
你为什么要申请这么多ID来问问题而且每次问题的标题都有"小女子"3个字......
解决方案十二:
引用7楼ssqxnn1000的回复:
网上找下Emgu(或者OpenCV也行)相关的文章,里边有你想要的图像相减算法Emgu.CV.Image<Gray,byte>Image1;Emgu.CV.Image<Gray,byte>Image2;Emgu.CV.Image<Gray,byte>Image3=Image1.AbsDiff(Image2);(Image3是Image1和Image2相减后的图像,一般用于消除背景)
那是不是需要把OpenCV添加到项目里边,然后再将其引用啊?我正在下载Opencv
解决方案十三:
引用1楼tcmakebest的回复:
说起来简单做起来难,这需要人工智能算法吧
就感觉想想的话就是两个图片相减的问题,可是就是一直无法实现
解决方案十四:
我觉得你先用PS抠图,再用代码处理,会简单的多
解决方案十五:
这个要直接程序处理,难度很高。这个收到海况、天气、光线明暗条件因素影响太多了。
解决方案:
引用13楼Z65443344的回复:
我觉得你先用PS抠图,再用代码处理,会简单的多
因为需要实现智能化的船舶过闸检测,所以先用PS的话会略显复杂
解决方案:
matbal有专门进行图像识别的函数,以前我师弟做图像配对的时候,看见用过,就是速度太慢度太慢
解决方案:
我倒是觉得你不要采取这种方式来做。通过照片分析来获取船只的信息,这个项目做出来都可以卖给马来西亚去找MH370了。换种思路:如果你只是单纯想获取船只的长度,采取传感器来做就简单多了。船只通过船闸一定是排队通过的,在进入船闸处按照一定距离安装一系列激光发射接收装置,船头遮蔽激光时开始计时计数,可以测算出来船只通过的速度和通过时间。然后解个一元一次方程就能算出来船只长度了。这样就只是写个上位机程序就可以解决问题了。
解决方案:
17楼正解,顶一个.这个算法,专业性太强了,根本就不是csdn这种地方可以解决的.
解决方案:
理论上先黑白化,然后降噪,然后异或或者直接异或(实际上就是把A图当B图的mask),在降噪(降噪是必须,即使是你描述滴情况,不同天气,色温或者小型目标都容易引起噪声)另外:实际上很少很少控制系统是用图像识别滴,多数情况下都是采用物理传感器,无线电,雷达,gps等手段完成滴
解决方案:
另外在顺带说一句,其实上航道上滴目标相当多,很多情况都是一个两船前后并行滴,你用图片识别很难识别出就像上公汽,一堆人挤在一块或者一个大人背后躲着两小孩,单纯用图片识别很难搞
解决方案:
引用12楼u014119902的回复:
Quote: 引用1楼tcmakebest的回复:
说起来简单做起来难,这需要人工智能算法吧就感觉想想的话就是两个图片相减的问题,可是就是一直无法实现
尤其是两张图片视角不一样的情况。。。
解决方案:
这么弱智的问题,你用C#做这个?留下邮箱,给你个以前导师教学用的C++的,完全满足你的需求。
解决方案:
引用22楼flllx_yisheng的回复:
这么弱智的问题,你用C#做这个?留下邮箱,给你个以前导师教学用的C++的,完全满足你的需求。
892578755@qq.com
解决方案:
解决方案:
问题与语言C#没有关系,用其它语言也肯定被虐。图片就算是同一角度拍的,得到的颜色肯定是有差别的,程序处理有一定的难度。需要专门的图形图像处理算法才行!
解决方案:
引用25楼91program的回复:
问题与语言C#没有关系,用其它语言也肯定被虐。
严重同意
解决方案:
引用4楼g767160的回复:
提供个思路,你试下Bitmap.GetPixel(x,y)这个函数,把两张图片的点一个一个比较,如果相同的就把这个点变为白色,如果不同的话,就把这个点留下来,只是这样想,没经过实践,楼主可以试试
这个思路不错,前提是这两个图片都是在理想条件下拍摄的
解决方案:
有点难度,学习一下
解决方案:
直接相减为什么不行?你不把图贴上来还真不好做分析
解决方案:
尝试在C#中调用Opencv,还在尝试中,先谢谢了,我会持续更新进展
解决方案:
不使用opencv的思路:1保证角度完全一致,保证拍摄的镜头没有动过2将两幅图片的色深降低,尤其不要用真彩色3降低后就可以用像素对比的方法,去掉相同的像素即可,比如将这些像素填写为白色总体来说就是牺牲色深,使颜色可对比ps:如果有水又有波涛的话会比较不好办,可以先把水那一块滤除,也是采用颜色在某一范围的判断方法
解决方案:
用灰度算法吧!
解决方案:
相当困难的问题,支持一下。
解决方案:
在船的背景前面挂一大块白布,完美解决...
解决方案:
引用23楼u014119902的回复:
Quote: 引用22楼flllx_yisheng的回复:
这么弱智的问题,你用C#做这个?留下邮箱,给你个以前导师教学用的C++的,完全满足你的需求。892578755@qq.com
QQ暴露了
解决方案:
引用15楼u014119902的回复:
Quote: 引用13楼Z65443344的回复:
我觉得你先用PS抠图,再用代码处理,会简单的多因为需要实现智能化的船舶过闸检测,所以先用PS的话会略显复杂
为啥不弄个传感器
解决方案:
你这不是被C#虐呀,是被图像识别虐
解决方案:
该回复于2014-04-22 12:07:20被版主删除
解决方案:
引用30楼u014119902的回复:
尝试在C#中调用Opencv,还在尝试中,先谢谢了,我会持续更新进展
是emgucv吧,Opencv不是c#的
解决方案:
坐等大神完美解决,嘿嘿
解决方案:
我可以再换个思路么,全世界能有多少条备案的大船啊?只要你能识别出这条船的id,比如船号啥的,直接数据库读取尺寸不就成了?
解决方案:
图像识别现成的函数库很多,matlab语言做比较容易因为有很多支持了,c的话麻烦点,c#更麻烦,但是归跟结底,你不会打算自己从头写图像识别的算法,对吧?你不会正好在做毕业论文吧?
解决方案:
不懂,帮顶
解决方案:
看标题就知道该主题要火
解决方案:
这个问题有难度啊,支持你一下吧
解决方案:
你先别管C#怎么实现,单单算法你就可以想很久了,需要很智能的,计算机模式识别基础要好
解决方案:
引用27楼FoxDave的回复:
Quote: 引用4楼g767160的回复:
提供个思路,你试下Bitmap.GetPixel(x,y)这个函数,把两张图片的点一个一个比较,如果相同的就把这个点变为白色,如果不同的话,就把这个点留下来,只是这样想,没经过实践,楼主可以试试这个思路不错,前提是这两个图片都是在理想条件下拍摄的
理想条件,话说,我觉得比较像素点,至少要在同一时间同一个角度来拍摄,识别率才高。不然,天气,时间,亮度都会出现问题。
解决方案:
这个问题一篇博士论文都可以了,图像滤波和识别涉及较多算法
解决方案:
首先把图片二值化,二值化需要一个黑与白临界像素值,这个临界像素值需要对大量图片做分析得出一个合适的值。如果这个临界值做得好,最终可得出船体是黑的其他为白的一张图片
解决方案:
你来就是虐我们的