Cursor Misalignme​nt in Intensity Graph (LV6.1)

Howdy.
I have an Intensity Graph, with a 2D array of data (about 300x300) and a cursor. The cursor is locked to the plot, which for intensity graphs, means that the cursor is drawn at the lower left corner of the pixel that is being addressed.
Most of the time this works fine. However, sometimes, the cursor is drawn as being located at one pixel, but the values reported for the cursor are in fact a neighbor (usually the one to the right). The zoom level of the graph is such that a given pixel is larger than a screen pixel (about 3-5 times), so I wouldn't think that it was an aliasing problem, but the problem does go away if I zoom in a little further.
Has anyone else seen this? Does anyone have a fix?

I don't have a repeatable set of conditions that lead to this problem, so I don't have a demo vi that exhibits it.
As to unlocking the cursor, I think that in an intensity plot that is more confusing; the location and value reported for a cursor position are shifted half a pixel down and half left with respect to the way the plot is filled in. In other words, say we have a 10x10 plot shown in 100x100 pixel window. Each intensity value is 10 pixels wide. The axis values line up on the boundaries of these pixels. When the cursor is within half a unit (5 pixels) of the crossing point of these axes, that is, near the intersection of boundaries of four adjacent pixels, the value reported is the pixel location and value in the upper right of these four pixels. This means that with an unlocked cursor, I can be positioning it over (visually) the lower left pixel, but selecting the upper right. In fact 3/4 of any given pixel's visual representation is actually going to select some other pixel. So I've locked the cursor to remove that uncertainty; now it is supposed to be always in the lower left corner of the pixel selected.

Similar Messages

  • Programmatically disabling/enabling cursor in intensity graph

    Hello all,
    I am building a LV interface (LV2011) for a stepper XY stage.  The system "scans" a surface, displaying it on the graph.  I set up to cursors to zoom into a region of interest (ROI).  Pressing a button resizes the scales to the ROI (zooming in on the area).  Sections of code move the XY stage, and read a device.  When done I want to zoom into a ROI and use a THIRD cursor to manually move the XY stage.  I have this working with TWO graphs, based on the "region of interest.vi" I found in the dev zone.  
    What I would like to do is have a boolean toggle controlling ONE GRAPH between setting min/max (cursors 0 and 1) and manual stepper position (cursor 2).  If cursor 2 is visible I want cursors 0 & 1 not showing and visa versa. Can I do this?
    I attached the example - bascially what I did was add a cursor to the 2nd graph, grabbing the XY vales and sending to the stepper controllers. Works great!  I am trying to "combine the two" by resizing the orig graph with a button click (works fine) and then click another button to show the XY stage cursor (and hiding the min/max cursors) - thats the brick wall
    On a seond note - controlling a XY stage using the intensity graph's cursor is really nice; however it would be great if I can control the cursor similar to a slider's "coerce" - has anyone done this?  I assume I have to write a routine in the event that performs some modulo function. Just curious!
    Thanks,
    Steve
    Solved!
    Go to Solution.
    Attachments:
    roi.llb ‏40 KB

    Your exmaple works perfect. Howver I am having probs with Val(sngl) on the XY graph.  On the example you gave, lets say I move the cursor with the mouse - event fires, everyone is happy. If I move the cursor with CODE - nada.  I even read the "Value" of the graph and wrote it to "Val(sngl)" to try to fire the event.  How does one force a trigger on an XY chart when you move a cursor (say cursor idx2) using code?
    Better yet - why when I read the Val and write to Val(sngl) does the event not fire??? I have been searching for a basic XY table with sensor -type project but havent found one yet.  Everyting works great - draginng the cursor moves the XY stage. Now I need to do the auto-scan part  Use code to place the cursor - trigger the even that moves the stage.
    Thanks
    Steve
    Attachments:
    XY_Stage_Rev8.vi ‏53 KB

  • Programmin​g intensity graph cursor to move automatica​lly

    Hi Everyone!
    I want to program the 2 cursors(horizontal and vertical) in the intensity graph(Bright spot.png) to move to the bright spot in the middle of the intensity graph(live video feed from a CCD camera) automatically without dragging the cursor manually to the bright spot, is it possible?
    I've attached part of my block diagram which involves the graph but i'm unable to attach the whole VI because it has some hardware dll in it.(you guys can ignore the formula part of the block diagram, it's not important)
    Attachments:
    Bright spot.png ‏118 KB
    block diagram.png ‏45 KB

    Use "Array Max&Min" to find the peak coordinates, translate them to x and y values, and change your cursor position property node to write and write these values.
    I am actually not sure why you have two cursors. A single cursor with a horizontal and vertical line seems sufficient.
    LabVIEW Champion . Do more with less code and in less time .

  • Fix axes in intensity graph with cursor

    Hi all,
    I try to use the intensity graph as an xy-input device. The user should be allowed to drag the cursor to enter the value. However, the user can always move the cursor outside the plot area, which causes the corresponding axis to rescale. I want to have strictly fixed upper and lower limits. Is there any way to achieve this? One possible solution would be to reset the min/max values every time the cursor was moved (and coerce the cursor position back into the range). A simpler approach would be appreciated!
    Regards,
    Matthias

    > I try to use the intensity graph as an xy-input device. The user
    > should be allowed to drag the cursor to enter the value. However, the
    > user can always move the cursor outside the plot area, which causes
    > the corresponding axis to rescale. I want to have strictly fixed upper
    > and lower limits. Is there any way to achieve this? One possible
    > solution would be to reset the min/max values every time the cursor
    > was moved (and coerce the cursor position back into the range). A
    > simpler approach would be appreciated!
    >
    You don't say what version of LV you are using, but if it is relatively
    recent, right click on the graph and go to Advanced and uncheck the
    option to have Cursors Scroll Graph. The user can still drag and
    release the cursor und
    er the edge of the graph, but this will not change
    the scales. You can pretty easily filter cursor points that are out of
    range and even write back to the cursor value if you need to. I believe
    that if there is data in the plot and the cursor is set to lock to the
    plot, then it cannot be dragged outside the data either, and that is
    another solution.
    Greg McKaskle

  • Cursor/Window for Zooming in Intensity Graph

    Does anybody know how to create a non-rectangular window (any shape
    connected by mouse clicks) for zooming (or for data retrieval) if a
    particular area in the graph is of interest in a intensity graph?
    Wouldn't it be really cool if we can select edges in a graph and
    retrieve the information (or data) from the graph?
    The other question of mine is: is there a way that when we're using
    intensity graphs, we can create the custom menu with right mouse button
    click, instead of the standard set of menu items? Any help is greatly
    appreciated. Thanks.
    Sent via Deja.com http://www.deja.com/
    Before you buy.

    [email protected] wrote:
    > Does anybody know how to create a non-rectangular window (any shape
    > connected by mouse clicks) for zooming (or for data retrieval) if a
    > particular area in the graph is of interest in a intensity graph?
    > Wouldn't it be really cool if we can select edges in a graph and
    > retrieve the information (or data) from the graph?
    In my pre-NI days, I had a lot of fun trying to coax image-manipulation and
    -analysis behavior out of LabVIEW intensity graphs. You can do a fair
    amount by making use of cursors and hotkeys and creating pseudo-overlays by
    setting image coordinates to certain colors to create visual cues in
    response to user inputs.
    That being said, I never considered trying to get complex ROI (region of
    interest) info from a user wi
    th an intensity graph, and I'll bet it's a
    pretty tough GUI trick unless you're using IMAQ Vision. If you find
    yourself trying to build features like this into your application, or doing
    a lot of image manipulation in general, you might save yourself time in the
    long run by getting the IMAQ Vision toolkit from NI.
    > The other question of mine is: is there a way that when we're using
    > intensity graphs, we can create the custom menu with right mouse button
    > click, instead of the standard set of menu items? Any help is greatly
    > appreciated. Thanks.
    I'm not aware of a way to suppress the built-in context-sensitive popup
    menus. Sorry!
    Regards,
    John Lum
    National Instruments

  • How can I stop the cursor from being dragged outside the bounds of an intensity graph in LV 7.1?

    Currently, an intensity graph cursor can be dragged outside the graph bounds, and the cursor position continues to change as if the graph had no bounds.

    You can maintain the cursor (and the graph scales...) between defined boundaries programmatically, using an attribute node. Not a very elegant solution, since there is some quivering. See the example.vi.
    Of course, if the user need to modify the scales (zoom in/out...), there will be some additional work ! :-)
    Hope this help.
    Chilly Charly    (aka CC)
             E-List Master - Kudos glutton - Press the yellow button on the left...        
    Attachments:
    Bound_cursor.vi ‏51 KB

  • Intensity graph Z cursor value

    Greetings!
    I am creating a scanning XY stage program using an intensity graph.  I have a cursor to drag around that moves the XY stepper motor stages; zooms, adjusts Z colors & "contrast", etc.  I have the data showing up fine.
    However I can't figure out how to get the Z value (so I don't have to show the big cursor legend).  As you know in the cursor legend as you move a cursor the X Y and Z values are shown.
    Can't find a property node for the Z value...  This must be simple 
    Thanks!
    Steve
    Solved!
    Go to Solution.

    Unless you use custom axis offsets and increments, it is just the value of the 2D array and the indices of the cursor positions, so index array should get what you want. If you use custom axis scaling, you need to apply the linear transform between cursor x, y values and corresponding array indices.
    In a better world, the cursor index property should give both indices of the 2D array and the method would directly work also for cases where the axis scaling is custom. This is the reason for my old idea here, so please vote for it!
    LabVIEW Champion . Do more with less code and in less time .

  • Profile from an Intensity Graph?

    Is there a VI to extract a "line profile" from an "Intensity Graph"?
    Hopefuly, the profile could be specified using the mouse.
    Thanks for any clue...
    Alfred A. Manuel, Dep. of Physics, Univ. of Geneva, 24 quai E.Ansermet
    CH-1211 Geneva 4, Switzerland. Phone: +41-22-702.6293 or 6397 or 6224,
    +41-22-771.1062 (home). Fax: +41-22-321.5606 or +41-22-702.6869
    http://sc2a.unige.ch/~manuel/main.htm [email protected]

    An intensity graph is just a 2D array. Simply slice out a column or row as desired.
    The attached example (LabVIEW 7.0)  lets you graph the slice under the cursor on a waveform graph. It should get you some ideas.
    Message Edited by altenbach on 01-09-2006 02:33 PM
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    IntensitySlice.vi ‏45 KB

  • Image processing from .txt file onto an intensity graph

    I am doing a mini project in my class and I was wondering if anyone could help me. It about image processing but I am bit stuck.
    Heres the idea:
    "An image is really nothing more than a 2D array of data. The value of every element in the array corresponds to the brightness of the image at that point.
    In this project you will create a VI which loads a 2D array of data and then displays it on the screen using the Intensity Graph. Three example files (boats.txt, gordon.txt and parrot.txt) are available on the module webpage that you can use. However, you can also use any other black and white image you like, but will need to convert it to a “text image” first. To do this you can use some software called “ImageJ” which is available on the computers and is free to download.
    You can vary the brightness of an image by adding the same value to every element in the array.
    The contrast of an image is adjusted by multiplying every element in the array by the same value. Using numerical controls and simple array mathematics, you should adjust the brightness and contrast of your displayed image.
    Some other ideas that you could try with image manipulation are:
    o Invert an image (change black to white and white to black)"
    First I am having problems putting my picture onto the graph. It is in the write file but the colours are not correct and the image has rotated 90 degrees. I will upload my VI so far when I get back onto my computer.
    Would really appricate the help! Thank you for reading

    Hi charlthedancer,
    Here is an example to get you started.
    Kind regards,
    GajanS
    Attachments:
    Test.vi ‏14 KB

  • How can I get the cursor value from a waveform graph

     Is there a way to get the value of cursor position on the waveform graph so mathematical calculations be performed on those values. We can see the value in cursor legend, but can we extract those values for future calculations in the block diagram somehow.

    Right-click on the waveform graph icon.  Select Create>Property Node>Cursor>Cursor Position.  That spits out a a xy cluster for the current cursor position.
    If you have more than one cursor, you can either set up a loop and set the Active Cursor property node (right click the property node and select "Change to Write") or you can pull everything you ever wanted to know about every cursor with the Cursor List property node. 

  • How to add (multiple) cursors programmatically in an XY graph?

     how to add (multiple) cursors programmatically in an XY graph?
    I am building an XY graph. then I would like to add cursors at certain locations (positioned on x axis) I determine through a program.
    How can I add cursors programatically?
    Thank you.

    Initialize a cluster array (CrsrList type) with as many cursors as you think you would ever need.   Setup your cursors dynamically, then delete the unused cursors (array elements) and then update your CursorList property.
    Message Edited by vt92 on 03-20-2009 04:04 PM
    "There is a God shaped vacuum in the heart of every man which cannot be filled by any created thing, but only by God, the Creator, made known through Jesus." - Blaise Pascal
    Attachments:
    cursors.PNG ‏5 KB

  • Change colors of individual pixels on intensity graph?

    I would like to be able to change the color of a set of individual pixels within an intensity graph, to blue for example, while leaving the color table otherwise as is, for example, gray scale.  The change to blue would be based on location, not on current gray value.  I think I can accomplish this using the mask fx with picture controls, and then convert to intensity graph.  Is there a more direct way?  A good example to demonstrate this capability would be just using a 'mouse down' event on an intensity graph to change the color at the mouse location.  Any thoughts are appreciated.
    Sincerely,
    Don

    Yes, seems to work fine .
    If you have LabVIEW 8.0, there is another possibility. There is a new property that allows drawing any pictures or picture elements on your graph area. Of course you could draw individual pixels, but nothing prevents you from e.g. drawing circles, squares, odd shaped areas, arrows or event text. ... Anything you could do with a plain picture indicator. One example that ships with LabVIEW 8.0 is Envelope.vi, see image.
    Message Edited by altenbach on 06-12-2006 07:31 PM
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    envelope.png ‏32 KB

  • Most efficient way to extract the amplitude of a signal and display on an intensity graph

    Hi All,
    I am having difficulty to display the amplitude of an voltage signal (voltage picked up by NI DAQ card).
    what I am trying: Voltage signal (Dynamic data type)--> 2D array of dynamic data type (using 2 nested for loops) --> normal 2D array with scalar values --> intensity graph
    I have difficulty to convert the dynamic 2D array to scalar 2D arry.
    I only want to extract the amplitude of the imcoming signal.. any body can give some advice? thanks in advance..
    Charlie

    Hi Hillary,
    Thanks for your reply.
    Yes, I did tried to use Amplitude and Levels Express vi, it should be the one I am looking for, but I found it not work in my case, I need to put the value of amplitudes into a 2D array.
    If I use Amplitude and Levels Express vi, it will give me a 3D array, I have found the solution, just convert the dynamic data to single scalar. (see pic attached)
    Anybody can help me to solve the following 2 problems:
    1. The speed of this program is too low, i think ii due to the DAQ assistant in the 2 for loops (for creating 2D array), it should be able to re-write using DAQmx (as "centerbolt" told me), I am working on this now, if anybody can help, I will appreciate that.
    2. Is there any other way to creat the 2D array (for purpose of increasing speed also).
    Thanks,
    Charlie

  • Fade colors of intensity graph

    Hi everyone,
    I've made a program where I read an 2D-array and plot this array in a intensity graph.
    I was wondering if the colors in the graph can fade in each other, preferably in vertical position (columns). The idea is that the numeric data becomes visualized like a DNA profile.
    I've added a image of the plotted graph.
    Thanks.
    Solved!
    Go to Solution.
    Attachments:
    Intensity graph plot major.PNG ‏48 KB
    Intensity graph plot minor.PNG ‏35 KB

    Without manipulating the array, no it's not possible.  I made an idea on the Idea exchange to fix this, I recommend you vote for it.  Anti-Alias or Smooth Intensity Plot
    Like the idea says, see this post for workarounds.
    Tim Elsey
    LabVIEW 2010, 2012
    Certified LabVIEW Architect

  • Cannot make vertical axis of intensity graph logarithmic

    Has anyone else noticed that that the vertical axis on intensity charts cannot be made logarithmic? Labview gives you the option, but doesn't do anything when you try and check the box. Property nodes don't seem to work either. Tried this in LabVIEW 2011 SP1 and 2013. Am I doing something wrong or is this just a feature that isn't avaiable? I am just wondering if its my install or something that is really an issue.
    My application is to plot the power spectrum of sound on a intensity chart to show history of sound recorded by a microphone in real time. Really good to pin point source frequencies of feedback.
    Amit

    Hi Amit,
    This is a documented problem with LabVIEW and it is currently being worked on. Here are a couple other Forums that discuss it and offer workarounds for this issue.
    Log scale in an Intensity graph
    Possible bug in Intensity Graph while using interpolate colors on a Log scale
    Intensity Graph - Mapping Mode
    As shown in the 'Possible Bug' link above, a Corrective Action Request has been filed under the number 453407 as soon as a couple of weeks ago. To fully answer your question, it is not your install or anything like that, just an issue NI knows about and will be working on for future releases.
    Douglas C.
    Applications Engineer
    National Instruments

Maybe you are looking for

  • Customer Opening Or Closing Balances

    Moderator message: do not offer points Hi, Can anybody tell me the Table or T.code where the Customer Opening/Closing Balances are maintained. <<Text removed>> Thanks. Kamal Edited by: Matt on Nov 22, 2008 6:04 PM

  • Sent mail does not appear in sent mail folder

    Hi. Odd problem. I have done a search for this but can't find an answer. I have an IMAP account with PIPEX and mail will not display the sent messages. Mail has 3 folders - Inbox, Sent, Trash. IMAP account has 2 folders - INBOX and a sub folder sent-

  • IOS 5 lag issues

    Why does iPod touch lags horribly when connected and disconnected from USB? I only have 0.5 GB usage out of 6.4 GB. It also freezesfrom time to time when turning iPod back on, loading an application, loading settings, etc. Many lag going on when doin

  • Adding custom fields to notifications-approval tab alv grid

    Transaction IW21 - Create PM Notifications. on the Approval Tab - there is an ALV grid that contains lots of fields. I know that i can click on the upper right hand corner and modifiy the layout by hidding fields. I want to add some custom fields to

  • Sync iPad Calendar to Both Exchange and Outlook on Two Windows 7 PCs

    I would like to sync my Outlook 2010/Exchange calendar from my computer at work with my iPad, and then sync my iPad with Outlook 2007 on my home computer. I'd like for the result to be one sync'd up calendar on each device. I have my iPad set to sync