PDA

View Full Version : Real-time Object Detection



Nap Reyes
February 21, 2003, 04:56:25
Dear Sir,

I have downloaded the trial version of your control and tested it on my SONY Mini DV Digital Handycam, DCR-TRV25E (via Firewire connection). It can capture live images, but is not working real-time. I intend to use it for Real-time Object detection, and so I wonder if purchasing the licensed version and generating an executable file of my application would dramatically reduce image capture time.

I am using Visual Basic v.6.0 as my compiler, with some of my computationally intensive routines written in Visual C++ (compiled as DLL). Even without the image processing routines yet, there is an image acquisition delay already. I wonder if my hardware set-up is suitable for Real-time Object detection.

Any information would be tremendous.

Sincerely,
Nap Reyes
Philippines

Johannes Vogel
February 21, 2003, 17:42:36
Hello,

what are the technical features of your computer ?

- processor (type, speed )
- amount of system memory
- PC or Laptop
- OS (WinXP / Win2k)


best regards
Johannes
IC Support

Nap Reyes
February 22, 2003, 09:06:30
Hi Johannes,

I'm running my application on a laptop, Toshiba Satellite (2800 Series), Pentium III - 700Mhz, 320 Mb RAM, 8Mb Video RAM, on a Windows XP (Home edition) platform. Aside from my minimal hardware configuration, I also have trouble getting rid of some captured image frames that queue up. I think that maybe if only I could process the last captured frame to detect an object, and disregard image frames in the buffer until detection is done on that frame, perhaps it would suffice.

Please have a look at a fragment of my code so that maybe you could help me correct and optimize it. I have two primary iterative routines in my program:

1. ICImagingControl1_ImageAvailable event to update the content of a PictureBox control (Picture1) using the latest captured frame.

2. Timer1_Timer event to detect an object in the PictureBox.
READY_TO_PROCESS is toggled in this event. It is set to False prior to running the detection routines; True after detection process is completed.


Private Sub ICImagingControl1_ImageAvailable(ByVal BufferIndex As Long)
Dim Elapsed As Double
Dim CurrentBuffer As ImageBuffer
Dim Buf As ImageBuffer

GetTimeElapsed 0
If Not READY_TO_PROCESS Then GoTo SkipImageBuffer

'ICImagingControl1.ImageBuffers(BufferIndex).Lock
Set CurrentBuffer = ICImagingControl1.ImageBuffers.Item(BufferIndex)
Picture1 = CurrentBuffer.Picture
'ICImagingControl1.ImageBuffers(BufferIndex).Unloc k

SkipImageBuffer:
'ICImagingControl1.ImageBuffers(BufferIndex).Relea seImageData CurrentBuffer
Elapsed = GetTimeElapsed(0)
LblLiveFPS.Caption = "Speed: " & Format(Elapsed, "##0.00") & " sec."
End Sub
---------------------------------------------------------------------------------------------------
Private Sub Timer1_Timer()
READY_TO_PROCESS = False
DetectObject
READY_TO_PROCESS = True
End Sub

Your expert assistance and support is greatly appreciated.

Sincerely,
Nap Reyes
Philippines

Johannes Vogel
February 24, 2003, 18:33:16
Hello,

You can speed up your application a little bit by replacing the following lines:

Set CurrentBuffer = ICImagingControl1.ImageBuffers.Item(BufferIndex)
Picture1 = CurrentBuffer.Picture

with this line:

Picture1 = ICImagingControl1.ImageBuffers.Item(BufferIndex).P icture

This copies the image data only once.

I recognized that you commented out the buffer locking. You should lock the buffer while you are doing something with it (i.e. copy its data).


I need a little more information about your application:
Please tell me how do you access the image in the picture box inside your C++ code.

Best regards
Johannes
IC Support