Image Processing with Geode GX2: Win CE or XPe?

G

Guest

Hello, I'm a student in image processing and trainee in a big IT company.

During my training I have to implement an embedded OS in a smart camera
(basically a PC embedded into a video camera) but I not quite sure which one
to chose.

We are devloping a smart camera for image processing based on the Geode GX2
[email protected] with 128MB RAM and compactflash memory.

Curently we use a real-time OS based on the Linux Monta Vista distribution.
Many of our customer are asking for an XP embedded version but I'm affraid
XPe will eat up a large amount of RAM. Since image processing could require a
lot of RAM maybe WinCE would be better suited.

I would like to know if anyone already tried to implement XPe on such
hardware, for image processing purpose.
What is the minimum amount of RAM required by XPe in graphic mode with the
following IO support: VGA (CS5535 Geode companion), USB, RS232, Ethernet and
network support. In addition it has to process video/still capture at high
resolution (1280*960) with a framerate up to 60 fps and let the maximum.

Any advice/recommendation will be appreciated.

Alexis
 
D

Dave August

I'd go with XPe and not CE.. CE is just to brain damaged.

FWIW I'm doing a PC104 based system that is basically everything you want
minus the Vidoe capture stuff, VGA,USB,RS232,Ethernet and a few extra
things that I won't need in production, and booting off of CompactFlash...
my disk image is 56MB... and runs fine in 128MB

Dave August
 
S

Slobodan Brcin \(eMVP\)

Alexis,

Although I like XPe, for video applications inside camera I would choose TI DSP solutions that can do real time WMV9 compression.
Geode processors are probably too slow for video handling in resolutions that you mention. DSP's on the other hand are designed for
applications like these.

http://dspvillage.ti.com/docs/dspvillagehome.jhtml?DCMP=TIHeaderTracking&HQS=Other+OT+hdr_p_dsp
http://focus.ti.com/docs/general/splashdsp.jhtml?&path=templatedata/cm/splashdsp/data/dm64x_home
http://focus.ti.com/pdfs/vf/vidimg/esc250paper2004.pdf


Regards,
Slobodan
 
G

Guest

Hello Dave and Slobodan.

Thank you for your quick reply.

Dave ,
Regarding the RAM, have you any estimation of how many RAM is needed by a
such install (approximatively)? Does your system make some image processing?

Slobodan,
Reagrding the video capture, it is not a primary goal to capture video to a
file. The smart camera is developed to be use in industry for autmation
purpose.
I was not very clear in my previous post: it process video capture in SXGA a
15fps and fps go up to 60 when in partial scan mode.
The hardware has already been developped so I have to stick with the Geode
architecture.
 
S

Slobodan Brcin \(eMVP\)

Alexis,

XPe can consume very little RAM memory, and space on disk. From 5MB+ but you never said what you need of functionality present.
If you want to write program as driver then you can go in less than 20 MB, but if you need .NET framework then you are doomed.

Also main question for you that should influence your choice of OS is whether you have capture hardware drivers for both Windows XP
and CE or you don't have them at all.
If you have drivers for XP only then you should probably not consider Win CE, unless you want to write them.


Regards,
Slobodan
 
G

Guest

Slobodan,

We need the following basic functionnalities in order to make work our
hardware control work:
-I/O: USB, VGA, RS232, RJ45 (TCPIP).
-Interface: a GUI, DirectX (at least DirectShow and DirectDraw), .Net
Framework is not needed.
-Capture: Drivers will be developed by a third party, soon.

What do we intend to do with the smart cam?
Common image processing tasks in machine vision:
-Pattern, Geometric, Shape matching.
-Edge Analysis.
-Color Analysis.
-Barcode recognition, OCR.
-Measurement
and so on.

What do we not intend to do with the smart cam:
Heavy processing tasks eating up a lot of ressources: 3D vision, motion
analysis, video compression... It's a smart cam with a 400MHz CPU it won't
compete with a Bi-Opteron system.

All I would like to know is an estimation of RAM needed for the hardware
control, disk space isn't really an issue.
We will deal with image processing stuff but we would like to have the
maximum ressources available for that.

Best Regards,
Aexis
 
S

Slobodan Brcin \(eMVP\)

Alexis,

It is possible to make XPe to use minimum mem resources (can't tell you what that mean exactly), but from list that you made two
things can be little problematic.

TCP/IP What do you mean by that?
If you need RAW access to TCP/IP without any services like network sharing etc then this is one driver that take few 100 KB, if you
need file sharing then things get bigger.
DirectDraw if you need access to video memory and surfaces like primary screen or overlay then you don't need DirectDraw interfaces.
One year ago MS documented native entry points that COM based DD uses to communicate with DD implemented in video drivers, so you
can use these interfaces to lighten up your image size and XPe maintainace.

Direct Show is/or at least can be unpredictable things because of myriads of codec's that people usually need. If you need Direct
Show only to take pictures from capture driver then you can do that trough old fashion functions like CreateFile, DeviceIoControl,
etc.

At the end you will see how much space you really need so based on that you can do measures to lighten up your image size.

Regards,
Slobodan
 
D

Dave August

Alexis,

No my app is strictly Windows GUI, but with lots of TCP/IP and serial
stuff..

If you need more than simple video functions like streaming but require
serious video processing Slobodan is correct you need a dedicated DSP,
certinaly a 400 mhz Geode will not have enough power

Dave
 
S

Slobodan Brcin \(eMVP\)

Alexis,

Few facts if you use color picture: If you use 2 bytes per pixel (which is minimum) then you will have following memory bandwidth
requirements: (that is if you capture hardware and its drivers are pure perfection)

1280x960x2x60 > 140.65 MB/s for bringing RAW video over PCI-?
PCI-33 could yield <125MB/s but this is theory. You should be extremely happy with ~100 MB/s and that is if you card is the only one
on PCI bus.
So first thing that you need is PCI-66+.

Memory BW:
Just for picture capture to memory you lost 140+ MB of bandwidth.
For processing you need to read this picture and apply some algorithm. Provided that all happen inside the processor cache you lost
minimum of 140+MB of bandwidth as well.
Common image processing tasks in machine vision:
-Pattern, Geometric, Shape matching.
-Edge Analysis.
-Color Analysis.
-Barcode recognition, OCR.
-Measurement, and so on.

Please let me know of algorithm that can do all this in one read pass, I am really interested.

To make at least some of the things possible with high resolutions you will probably have to cut your initial requirements if you
plan to stick with Geode platform.
BTW if you need every bit of performance then you should integrate all image handling and processing in to the driver/preferably in
symbiosis with capture custom driver.

I had to write similar thing for our hardware although I had HTT 2.4 GHz processors, with three separate PCI buses. And a lot of
memory for storing captured pictures in case that processor(s) can't keep up at certain moments.
I'm talking here about capture of (3x2x4) cameras in 702x288x2x25 resolution.

Regards,
Slobodan
 
G

Guest

Hello Slobodan and Dave,
I even care about my work on sunday (maybe I will be hired at the end of my
training =) )

We never intended to do all the processing quoted above at the same time and
in one pass. It's either pattern matching either OCR either...

We'll sell the hardware, with maybe an image processing library bundled, and
our customers will implement the processing they'd like for their particular
needs.

Since the Linux version works well with our hardware for this kind of
processing (2D barcode, pattern matching...) we would like to stick with our
hardware.

Thus we need to supply and effcient system for capture and IO and have
enough remaining ressources for our customers custom applications.

We are currently in a validation process to determine which stuff will be
achievable with the smart cam and which ones won't be.
I'm testing with the XPe evaluation kit, I'll have a better understanding of
what could be done with our hardware once I get my first XPe image.


Thank you very much for your support,
Alexis
 
S

Slobodan Brcin \(eMVP\)

Alexis,

I was away without computer for few days this is why this response is little late.
If you don't want to do all things at once then it can be done, just make sure that you know what max performance you try to achieve
in front and max that can be achieved with some hardware.
Let us know if you need help with customizing XPe.

For your first image you can use "minlogon template" component that will make your image to boot in no time.
Just add it to empty project and resolve dependencies. After that your image should boot with generic drivers.

Regards,
Slobodan
 
Top