图像识别高级问题(100分)

  • 主题发起人 主题发起人 szchengyu
  • 开始时间 开始时间
S

szchengyu

Unregistered / Unconfirmed
GUEST, unregistred user!
1.查API手册,用SetMapMode将坐标映射模式设置为MM_ISOTROPIC后,
但我却不能用SetWindowOrgEx和SetViewportOrgEx设置x,y坐标轴方向;
我想显示左右反向的图像和文字,

2.我的要求是将视频捕获卡的人像从单一颜色的背景提取出来,需要的结果应该
是二色图像,背景部分变为白色或黑色,人像部分变为另外一种颜色;
我有一本人民邮电出版社的<Visual C++ 数字图像处理>,上面有边缘检
测及跟踪,轮廓提取,但结果不是很理想,它会将物体里的色差太大的部分了认
为是边缘,这不是我需要的.
我有几个方案:
一 用色差来判断背景与人像,我用的是24位真彩图,RGB三个分量色差怎么表
示,随便用一个数,如20,但效果不好,
二 先将图像变换成灰度图,再....????
三 从捕获卡本身解决:
人像无论如何都会有运动,所以取两帧图像,作XOR计算,应该可以得到人像
大致轮廓;
能否从捕获卡中的图像中判断与摄影头的距离,背景应该是最远的,请问
VFW中有这样的函数吗?
行得通吗?请赐教.....

 
WHY............
WHY............
WHY............
WHY............
WHY............

无人应答??????????????/
 
从单一颜色的背景提取出来,把他 腐蚀 掉做好了。
(这就是腐蚀的特长了,可能要一个种子点)
我有一本人民邮电出版社的<Visual C++ 数字图像处理>,上面有边缘检测
及跟踪,轮廓提取,但结果不是很理想。
实施改进过的hough变黄.
在买一套 科学出版社 图形图像处理丛书 看看行不行.
that's all.
bonus.


 
无法保存数据: 18。

从单一颜色的背景提取出来,把他 腐蚀 掉做好了。
(这就是腐蚀的特长了,可能要一个种子点)
我有一本人民邮电出版社的,上面有边缘检测
及跟踪,轮廓提取,但结果不是很理想。
实施改进过的hough变黄.
在买一套 科学出版社 图形图像处理丛书 看看行不行.
that's all.
BTW:你出的分太少了.没人看
.bonus.


 
分太少?
没办法,我是穷光蛋,刚上DFW才三天,还有很多问题呢
,求各位行行好吧?

有名:

先给30分,我先找找你说的书吧.
 
直接将背景颜色替换为黑色(白色)不行吗?
难道你的人像中也有与背景一样的颜色吗?
如果有就先选定背景再作替换.(选定算法应该不算太难)
 
这是个很复杂的算法,真正的MPEG4就应该建立在Object识别的基础上,
但现在还没有听说被实现了(有些MPEG4软件中用的还是矩形块)

靠运动是不可靠的:从模拟设备进入采集卡的信号其实一直都在变,加上光线等原因,域值
很难取.
距离远近也不可取:现在流行的采集卡好象没有三维的. :P
VFW中只有基本的采集,调用压缩和流合成等操作,没有那么智能.
因此,到目前为止,图象运动侦测都没有达到实用的要求(要么误报要么漏报)(要么白天不行
要么晚上不行)...
 
很有兴趣
 
To: LeeChange

你好,没有点建议性的意见吗?
第一个问题呢?
现在设置坐标方向显示图像可以办到,但显示文字可以吗?

能给个联系方式吗?
 
在DFW上就能好好交流.
 
我有几个问题没有搞请楚:
  你在视卡是中的背景说就是单一色吗?是绝对单一色还是相对单一色(即人眼看上去差不多)。
 
To zytzjx:
如果绝对单一,就简单了,我的环境是“相对单一“,
请赐教
 
有成功的,给我一份例子,我个人感觉可能用分形或小波的方式也许能解决,
或则用图形的fft变化后,滤掉低频分量,再做后续处理会好一些.
 
今天才看到这个问题,我来说说:

>1、显示左右反向的图像和文字
这是水平镜像或者是水平翻转的问题啊,
procedure TMainForm.N16Click(Sender: TObject);
var
I,J :integer;
p,p1 :PByteArray;
Bmp,Bmp1 :TBitmap;
begin
Bmp :=TBitmap.Create;
Bmp.Assign(MainImage.Picture.Bitmap);
Bmp1 :=TBitmap.Create ;
Bmp1.Assign(MainImage.Picture.Bitmap);
case (Sender as TMenuItem).Tag of
1://///////////水平镜像
begin
for J :=0 to Bmp.Height-1 do
begin
p :=Bmp.ScanLine[J];
P1 :=Bmp1.ScanLine[J];
for I :=0 to Bmp.Width-1 do
begin
p1[3*(Bmp.Width-1-I)+2] :=p[3*I+2];
p1[3*(Bmp.Width-1-I)+1] :=p[3*I+1];
p1[3*(Bmp.Width-1-I)] :=p[3*I];
end;
end;
BitBlt(MainImage.Canvas.Handle,0,0,MainImage.Width,MainImage.Height,
Bmp1.Canvas.Handle,0,0,SRCCOPY);
end;
2://////////////////垂直镜像
begin
for J :=0 to Bmp.Height-1 do
begin
p :=Bmp.ScanLine[J];
P1 :=Bmp1.ScanLine[Bmp.Height-1-J];
for I :=0 to Bmp.Width-1 do
begin
p1[3*I+2] :=p[3*I+2];
p1[3*I+1] :=p[3*I+1];
p1[3*I] :=p[3*I];
end;
end;
BitBlt(MainImage.Canvas.Handle,0,0,MainImage.Width,MainImage.Height,
Bmp1.Canvas.Handle,0,0,SRCCOPY);
end;
end;
Bmp.Free;
Bmp1.Free;
end;

2、从背景中提取人像
我们换个思路来考虑:利用种子填充法填充背景色(填充的是连通域),然后填充人像的部分!
至于种子填充的算法,你可以看看图形学。我以前做过的,找起来比较麻烦,不知道扔到哪里去了。
 
卷大侠:
现在我主要用腐蚀与膨胀来处理,经过这段时间的修改,有些感想,请指救

一:这方面的理论是否并未完善,我也不知道应该增加哪些理论知识;

二:由于以上原因,我们在有限定的环境下处理;
图像来源于摄像机,影响效果的因素有摄像机/头的质量、外界光线等;
需要指定摄像机/头哪些指标以减少摄像机/头对图像颜色失真、不稳定的影响;
(这个问题可能问得有些偏,^_^------病急乱投医)

三:具体点的问题:我对24位图像进行腐蚀,
var
i, j, m: integer;
p1, p: PByteArray;
w, h: integer;
begin
w := bmpCap.Width;
h := bmpCap.Height;

bmpFspz.Assign(bmpCap);

// 腐蚀
for i := 0 to h - 1 do
begin
p1 := bmpCap.ScanLine;
p := bmpFspz.ScanLine;
j := 3;
while j < (w - 1) * 3 do
begin
// 处理每一个点, 用 1 * 3 点阵进行腐蚀
// 预先置为白色,待挖去
p[j] := 255;
p[j + 1] := 255;
p[j + 2] := 255;
for m := -1 to fsUint - 1 do
if (abs(p1[j + m * 3] - colBakB) > cdfB) or // ***
(abs(p1[j + m * 3 + 1] - colBakG) > cdfG) or // ***
(abs(p1[j + m * 3 + 2] - colBakR) > cdfR) then // ***
begin
// 置为黑色,留下
p[j] := 0;
p[j + 1] := 0;
p[j + 2] := 0;
break;
end;

inc(j, 3);
end;
end;
end;

//*** 所示行中的 colBakB、colBakG、colBakR;cdfB、cdfG、cdfR分别为
取自背景色参考点的的Blue, Green, Red分量;各分量与背景色差值的阀值;
如果是蓝色的背景,各分量是否有一定关系,还是可以设为相等就可?

四:。。。。。。。。。。。。(未完,待续)

这关系到我的饭碗和我对我自己的信心,我下半辈子的出路问题,
所以还请卷大侠帮忙。。。。

5555555555
 
呵呵,比我还快!

第一个问题就不讨论它了,我本来是不想用图像的翻转来解决,
但发现WIN32并不支持反向坐标(除非中东版本)

第二个问题:谢谢指明方向,我会查资料,但如果背景不是连通的呢?
 
不管背景是否是连通的,都可以搞定;
如果是连通的,就用种子填充法;
如果不连通,就逐行扫描!
 
我查过资料了,我的问题可不止这么简单,
因为背景色并不是纯色的(如果这样,我也不来这里问了),是从摄像头取出的。
甚至上一时刻和下一时刻由于光线、气流的不同,背景色都会有略微的差别;
背景的上半部分和下半部分都不一定完全相同,
不论是我原来用的腐蚀还是现在的种子填充,都存在一个任务:选取合适的阈值,
如果这个阈值太大,会使人像区域缩小,如果阈值大小,人像区域会扩大。

这才是问题的关键!
这是我的看法,不知道对不对?
 
这么一个问题,其实涉及了很多的东西,比如说计算机视觉原理。
从摄像头获取的图象,经过图象处理模板对图像进行量化,得到数字图象;
在这个传输、转化的过程中,有一下几点需要注意 :
1、滤波
2、均衡化
3、边缘检测
4、二值化
5、去噪
6、提取轮廓
其实你说的阀值的选取,并没有一个确定的范围,需要根据实际情况的不同即时处理。
上面说的几点,在数字图象处理里都有讲解;
误差肯定是存在的。

 
后退
顶部