07-22-2016 03:02 AM
Hello Everyone,
I am trying to develop a User Interface where my customer can import an image and select certain points in the image where he positioned thermocouples. As the measurement starts I would like to overlay a semi-opaque intensity chart, that visualizes the temperatures of the thermocouples. Kinda like the SeeSV demo.
Since LabVIEW (to my knowledge) only allows 100% transparency or none, overlaying a transparent intensity chart on a picture didn't work. Also, I think I remember that this would seriously hurt performance.
Since .Net is usually the correct tool for this kind o f thing I tried the picture Box. Here's what I did:
I also tried the fromFile Method. In both cases, nothing really happened.
Another thing I tried was to overlay two Pictureboxes, one for the image and one for the overlay. The Picturebox has a Method to set the background color which supports alpha channel, but it seems that this only sets the background color, when called. This has the effect, that you can set it to fully transparent while your VI background is yeller and it will become yellow, but if you then set the background to another color it'll still be yellow.
Right now my workaround would be to use a single 2D Picture and "mix" Background image and overlay together. This does feel a lot like writing functions that must exist somewhere already. There must be an easier way. Do you have a better idea?
Any help is greatly appreciated!
07-22-2016 12:02 PM
The old CW3Dgraph used supported variable transparency
so if you...
render the picture as one plane with trnasparency at 0%
and then
plotted your intensity data on another plane
and
forced the view to be straight down you may get the result you want.
Ben
07-22-2016 02:01 PM
I once used this approach to mix several images ( 1000 x 600) sensors and cameras generating a live-image using various picture palette vi's
Transparency is simply a weighted average between the color values of two pixels. As an example, consider the following two colors:
Pure red, or RGB(255, 0, 0)
Pure blue, or RGB(0, 0, 255)
At 50% transparency – or a pure blending between these two colors – we would simply add the individual color amounts together and divide by two. This gives us a new color –
Purple, or RGB(127, 0, 127)
The effect is certainly more impressive when applied pixel-by-pixel across an entire image, as the downloadable project demonstrates.
but I guess, .NET might be a better solution at framerates higher than 30 fps.
the Screen Capture.vi (32.9 K) LabVIEW 8.6 from https://decibel.ni.com/content/docs/DOC-37135 might be a good start for you, if you wanted to learn about .net image processing
Regards,
Alex
07-26-2016 06:50 AM
Hi,
now I've finally gotten around to look at my problem a bit more.
I have felt that the 3D Solution is a bit complicated in that I couldn't figure out how to map the picture to the plane. I assume it's done by plotting a plane (i.e. a Matrix with identical values) and then pushing the bmp in as mapping, but I didn't quite know where to start here.
As for the mixing solution: If you know what size the picture will be, this works well. However, I have to assume that my customer will use whichever picture he'll get his hands on, so I need a solution with a built in zoom function.
Because of this, I had a closer look at the .Net PictureBox. and finally found out how to load Image and BackgroundImage into it. Since the Image supports alpha Channel this solves all my problems but one: Loading pixels into it. Right now my only solution is to save the png with alpha channel and load it back in. This function is called once every 5 Seconds, so that's acceptable. Maybe someone knows how to push in an array of pixels. I somehow fail to convert the array into a .Net Pointer. Here's the core of my solution:
Thanks for all your help!
P.S.: Kudos for using that FF8 Picture
07-26-2016 08:22 AM
Maybe someone knows how to push in an array of pixels.
How about this ?
https://decibel.ni.com/content/docs/DOC-15165
07-26-2016 09:05 AM
oh, I posted the wrong link. here's the real one: https://decibel.ni.com/content/docs/DOC-15159
07-26-2016 09:47 AM
looks like this is compatibel with your core vi: