How do I convert complex images to 8-bit grayscale images?

I made a fourier transform of a greyscale image and want save this pictures as greyscale pictures. I can see the picture on the monitor, but I can't get it converted.

Just found the solution after a lot of trials.
You do the fourier transform, use IMAQ ComplexFlipFrequency, extract the magnitude plane as an array,take the absolute value, divide by 620,000, multiply by 256, set all values greater than 255 to 255, convert to an unsigned integer array, convert to U8-image.
I don't know why the magic number is 620,000. I found it by trial and error.

Similar Messages

  • To convert an rgb image to 8 bit grayscale

    Hey,
    I need to convert an rgb image to 8 bit grayscale image as the image is being acquired, im using the imaq create VI, which has an 'image type' terminal which allows the choice of image to be selected.however this isnt working. any solutions?
    also
    Im trying to make a image constant for the imaq subtraction VI, so the this constant image is subtracted from each image as its acquired.what would be the easiest way of doing this, without having the user specify the same image path each time? thanks.

    Not sure what you mean by extracting a plane?
    Here is a VI that will convert an image to 8-Bit.  This paired with the grayscale one will get the desired result.  See example.vi below.  Order that they are applied does give slightly different results.
    LV 8.0 through 2013, Win 7
    CLA
    Attachments:
    example.vi ‏12 KB
    QSI Convert to 8-Bit Image.vi ‏22 KB
    QSI Grayscale Image.vi ‏28 KB

  • How to create a 16-bit grayscale image from matrix of values

    Hello all,
    I'm having a problem converting a series of measurements into a specific image. I have a matrix of nxm dimensions (n and m variable), which contains measurement data. My intention is to transform this matrix into an image to be analyzed later on by an external software. The trick, however, is that the image has to be in 16-bit grayscale format: in grayscale for doing the image processing, and 16 bits to make sure that resolution is not hindered.
    I've been looking around the web and still haven't found a way of somehow mapping the measurement values I have in that matrix into pixels (16-bit grayscale ones, that is). I have access to the Full Development System version of LabView, but not other toolboxes.
    Does anyone have any suggestions?
    Solved!
    Go to Solution.

    Hi everyone,
    I've managed to get it to work thanks to some help from people on other forums. The key is to use the IMAQ driver, which gives the VIs necessary to create images on 16-bit grayscale (only supported nicely by PNG format apparently).
    The discussion on the other forum can be found here: http://stackoverflow.com/questions/11101420/structure-of-16-bit-grayscale-image-to-be-generated-in-c...
    The IMAQ driver can be found here: http://search.ni.com/nisearch/app/main/p/bot/no/ap/tech/lang/en/pg/1/sn/catnav%3adu,n13%3ahardwareDr...

  • Using conversion to array to add 16 bit grayscale images

    Dear all,
    Usual disclaimers, first post, tried to search using a variety of terms, no luck, so posting a new question!
    I am trying to perform a running a verage of a 16 bit grayscale image. I do not have access to the Vision development module.  My 'workaround' is to grab the image, convert to array and then, using a shift register, to add this array to that acquired at the previous loop iteration. The problem I am having is that the shift register, despite being fed data in a 16 bit unsigned word formatt, returns 8 bit data. The add function is then trying to add 16 bit to 8 bit data and returns an empty array.
    Can anyone help? Surely it must be possible to use shift registers with arrays of 16 bit data?
    Any help appreciated!

    Shift registers work with all datatypes. Can you show us your code?
    LabVIEW Champion . Do more with less code and in less time .

  • Display/save 8 bit grayscale image

    I have a VI that is capturing an 8 bit grayscale image (1D array of 1500 pixels). It has a 10 byte header that I strip off and try to display it.  The problem is that the displayed picture is interpeted as an RGB.  Also, the saved image can be opened using a picture viewer but is not correct.  It is missing the pixel data. How do I get this to display as an 8 bit grayscale image.  I would also like to duplicate the 1 row of image data to about 50 rows so that it is easier to view.  using a for loop and indexing the row only leaves the pxmao empty.
    Solved!
    Go to Solution.

    Bjoles,
    You are missing a colour table input to your flatten pixmap block. See the vi snippet I have attached. Also, I have found that building arrays from a for loop is a quick way of doing it, Labview seems to preallocate the memory correctly.
    Luke_A_P
    Attachments:
    build stripe.png ‏24 KB

  • If you change the image mode of this image from 8-bit RGB image to Grayscale mode while in PSCS – what will the new Pixel Count be?

    If you change the image mode of this image from 8-bit RGB image to Grayscale
    mode while in PSCS – what will the new Pixel Count be?

    If you mean by Pixel count the number of pixels, this will not change. The image will have the same size thus the same number of pixels.

  • How to create Image from 8-bit grayscal pixel matrix

    Hi,
    I am trying to display image from fingerprintscanner.
    To communicate with the scanner I use JNI
    I've wrote java code which get the image from C++ as a byte[].
    To display image I use as sample code from forum tring to display the image.
    http://forum.java.sun.com/thread.jspa?forumID=20&threadID=628129
    import java.awt.*;
    import java.awt.color.*;
    import java.awt.image.*;
    import java.io.*;
    import java.util.*;
    import javax.imageio.*;
    import javax.swing.*;
    public class Example {
    public static void main(String[] args) throws IOException {
    final int H = 400;
    final int W = 600;
    byte[] pixels = createPixels(W*H);
    BufferedImage image = toImage(pixels, W, H);
    display(image);
    ImageIO.write(image, "jpeg", new File("static.jpeg"));
    public static void _main(String[] args) throws IOException {
    BufferedImage m = new BufferedImage(1, 1, BufferedImage.TYPE_BYTE_GRAY);
    WritableRaster r = m.getRaster();
    System.out.println(r.getClass());
    static byte[] createPixels(int size){
    byte[] pixels = new byte[size];
    Random r = new Random();
    r.nextBytes(pixels);
    return pixels;
    static BufferedImage toImage(byte[] pixels, int w, int h) {
    DataBuffer db = new DataBufferByte(pixels, w*h);
    WritableRaster raster = Raster.createInterleavedRaster(db,
    w, h, w, 1, new int[]{0}, null);
    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
    ColorModel cm = new ComponentColorModel(cs, false, false,
    Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
    return new BufferedImage(cm, raster, false, null);
    static void display(BufferedImage image) {
    final JFrame f = new JFrame("");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.getContentPane().add(new JLabel(new ImageIcon(image)));
    f.pack();
    SwingUtilities.invokeLater(new Runnable(){
    public void run() {
    f.setLocationRelativeTo(null);
    f.setVisible(true);
    And I see only white pixels on black background.
    Here is description of C++ method:
    GetImage
    Syntax: unsigned char* GetImage(int handle)
    Description: This function grabs the image of a fingerprint from the UFIS scanner.
    Parameters: Handle of the scanner
    Return values: Pointer to 1D-array, which contains the 8-bit grayscale pixel matrix line by line.
    here is sample C++ code which works fine to show image in C++
    void Show(unsigned char * bitmap, int W, int H, CClientDC & ClientDC)
    int i, j;
    short color;
    for(i = 0; i < H; i++) {
         for(j = 0; j < W; j++) {
         color = (unsigned char)bitmap[j+i*W];
         ClientDC.SetPixel(j,i,RGB(color,color,color));
    Will appreciate your help .

    Hi Joel,
    The database nls parameters are:
    select * from nls_database_parameters;
    NLS_LANGUAGE AMERICAN
    NLS_TERRITORY AMERICA
    NLS_CURRENCY $
    NLS_ISO_CURRENCY AMERICA
    NLS_NUMERIC_CHARACTERS .,
    NLS_CHARACTERSET CL8MSWIN1251
    NLS_CALENDAR GREGORIAN
    NLS_DATE_FORMAT DD-MON-RR
    NLS_DATE_LANGUAGE AMERICAN
    NLS_SORT BINARY
    NLS_TIME_FORMAT HH.MI.SSXFF AM
    NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
    NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
    NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
    NLS_DUAL_CURRENCY $
    NLS_COMP BINARY
    NLS_LENGTH_SEMANTICS BYTE
    NLS_NCHAR_CONV_EXCP FALSE
    NLS_NCHAR_CHARACTERSET AL16UTF16
    NLS_RDBMS_VERSION 9.2.0.4.0
    Part of the email header:
    Content-Type: multipart/alternative; boundary="---=1T02D27M75MU981T02D27M75MU98"
    -----=1T02D27M75MU981T02D27M75MU98
    -----=1T02D27M75MU981T02D27M75MU98
    Content-Type: text/plain; charset=us-ascii
    -----=1T02D27M75MU981T02D27M75MU98
    Content-Type: text/html;
    -----=1T02D27M75MU981T02D27M75MU98--
    I think that something is wrong in the WWV_FLOW_MAIL package. In order to send 8-bit characters must be used UTL_SMTP.WRITE_ROW_DATA instead of the UTL_SMTP.WRITE_DATA.
    Regards,
    Roumen

  • How to determine the correct K value within a grayscale image, quick?

    I frequently need to know specific grayscale values from grayscale images for further use in other applications.
    Problem: When opening the Color Picker the picked grayscale value is separated in CMYK. But I need it in K only.
    I actually have a workaround by comparing the RGB values while zeroing the CMY values and altering the K unless I found the correct value.
    Anyone knows an easier way to get a correct grayscale value in K (out of CMYK), quick?
    And btw. the K from the info panel does not show the correct value I need to know.

    Hi ,
    Please configure the steps in SPRO ..
    Product Costing Controlling -> Cost Object Controlling -> Product Cost by Order -> Period end closing -> Work in Progress
    Configure all the steps , it needs to be ideally done by the FICO consultant , please revert back or search SDN regarding issues in configurations
    Regards
    Sarada

  • Encode and Decode 16 bit grayscale image to jpeg2000

    i am trying to convert 10 bit grayscale raw image to jpeg 2000 using J2KImageWriter and i want it to convert back to grayscale raw image but when i am converting it it gives NULL.
    Here is my code
    public class Main {
    public static void main(String[] args) {
    if(args.length!=4)
    System.out.println("\nEnter imagefile height width header\n");
    System.exit(0);
    String filename=args[0];
    int height=Integer.parseInt(args[1]);
    int width=Integer.parseInt(args[2]);
    int header=Integer.parseInt(args[3]);
    try
    //reading the image data
    FileInputStream imagefile=new FileInputStream(filename);
    System.out.println("\nSize of image file:"+imagefile.available());
    System.out.println("\nHeader:"+String.valueOf(header)+" bytes\n");
    imagefile.skip(header);
    short pixels[]=new short[height*width];
    int i,j,k;
    k=0;
    for(i=0;i<height;i++)
    for(j=0;j<width;j++)
    int lsb=imagefile.read();
    int msb=imagefile.read();
    pixels[k]=(short)(msb<<8 | lsb);
    k++;
    //System.out.println(String.valueOf(pixels[i][j]));
    imagefile.close();
    DataBuffer buffer=new DataBufferUShort(pixels,width*height);
    SampleModel sm=RasterFactory.createBandedSampleModel(DataBuffer.TYPE_USHORT,height,width,1);
    Raster raster=RasterFactory.createWritableRaster(sm, buffer,new Point(0,0));
    //imagedata reading complete
    //conversion to jpeg 2000
    String outfile=args[0].substring(0,args[0].lastIndexOf('.'))+".jp2";
    File outimage=new File(outfile);
    ImageOutputStream imout=ImageIO.createImageOutputStream(outimage);
    J2KImageWriteParam j2kparam=new J2KImageWriteParam();
    J2KImageWriterSpi spi=new J2KImageWriterSpi();
    J2KImageWriter j2kwriter=new J2KImageWriter(spi);
    j2kparam.setLossless(true);
    j2kparam.setComponentTransformation(false);
    j2kparam.setEncodingRate(0.5f);
    j2kparam.setFilter(J2KImageWriteParam.FILTER_53);
    j2kparam.setNumDecompositionLevels(3);
    j2kparam.setWriteCodeStreamOnly(true);
    j2kwriter.setOutput(imout);
    j2kwriter.write(null,new IIOImage(raster,null,null),j2kparam);
    imout.close();
    J2KImageReaderSpi j2kspi=new J2KImageReaderSpi();
    J2KImageReader j2kreader=new J2KImageReader(j2kspi);
    ImageInputStream imin=ImageIO.createImageInputStream(outfile);
    j2kreader.setInput(imin, true, false);
    Raster decomp_raster=j2kreader.readRaster(1, null);
    int outputdata[]=new int[width*height];
    decomp_raster.getPixels(0,0,width,height,outputdata);
    FileOutputStream fileout=new FileOutputStream("decomp");
    for(i=0;i<height*width;i++)
    short temp=(short)outputdata;
    fileout.write(Short.valueOf(temp).byteValue());
    Short a=new Short(Short.reverseBytes(temp));
    fileout.write(a.byteValue());
    fileout.close();
    catch(Exception e)
    System.out.println(e.getMessage());
    Can anybody help me with this. Actually i need to study the performance of jpeg2000 compression using different setting of parameters.
    Thanks in advance.......

    Hi,
    I am able to encode and decode the image using J2Kwriter and J2Kreader classes. But now some other issue has came up.
    When compressed losslessly, the new jpeg2000 filesize is 415245 bytes. (My original file is of size 2000000 bytes)
    But when i am doing lossy compression, it results in following file sizes.
    Below 0.5 (encoding rate) - 535 bytes.
    Greater than or equal to 0.5 - 541 bytes.
    I tried with the following values of encoding rate - 0.1, 0.3, 0.5, 0.8, 1, 1000, 100000000, 500000000.
    I m not able to understand why i am getting the same filesize even with different encoding rate.
    How should i set the encoding rate parameter to achieve my target compression ratio.
    Kindly guide me. I will be very thankful to you.
    Preeti

  • How can i convert a string to use on a image property?

    public function excluir(nome:Image):void
                                            nome.enabled = false;
    it's simple...
    I'm trying to use a string who comes from the db to set on image property.
    it's like -> id.enabled = false

    Hi,
    What are you trying to do?
    s:Image is a component in flex, with source property you set the path and name of the image for the s:Image component.
    http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf69084-7f9d.ht ml
    If you have a list of images path in the database you can probably read all in arrayCollection and add those images in a list like:
    http://livedocs.adobe.com/flex/3/html/help.html?content=dpcontrols_2.html
    I hope this help

  • How do I convert color to black & white or grayscale in InDesign CS3?

    I'm working with a number of publications which require some advertisements to be in grayscale or black and white. Short of changing all of my pictures to grayscale before I import, is there a way to manipulate the color within InDesign? And some of the images I am importing are PDFs, which are even harder to manipulate--is there a way to do this in InDesign at all?
    Thanks!

    >You can produce a grayscale PDF by printing to a Postscript file,
    choosing Output > Color > Composite gray, and Distilling the PS file
    (assuming you have the full version of Acrobat).
    If you have a full version of Acrobat you can do that in one step by choosing AdobePDF as the printer. :)

  • Save an 16 bits grayscale image in a bmp file

    Hello,
    I need to save a bmp file using an I16 grayscale picture.
    I already did the following VI that saves the picture in bmp but the colors are not good : there is only blue levels.
    I think there is a problem with the type of data that feed "array to color image" or with the colorscale but i don't manage to find where.
    Hope you can help me.
    Tank you.
    Ben 

    Hi
    The arraytocolorimage expects U32 because expects a RGB color, try this instead of the "toU32"
    Rodrigo Cuenca
    www.cidesi.com

  • How do I Convert a  Tiff image to a jpeg without being FORCED to 8-bit Color?

    I am an Artist.  I have High quality TIFF images.  When I convert the tiffs to jpeg it forces me into 8-bit color automatically. (Forget about 32bit - it will not allow me to jpeg that at all)   The only way I can get back to 16bit color is to use the already SMAshed file and bring it up to 16bit.  THIS makes NO sense.  Once the jpeg is smashed, HOw in the world is it supposed to convert up again. ??  Then even though it says you converted the file to 16 -bit , the metadata refers still to the file as 8-bit.
    On top of all of that confusion, One picture, for example, when supposedly converted to 16bit,  gets much BRighter then even the original Tiff image.  It looks good on one hand and over exposed on the other.  I assume that is photoshop throwing in fake resolution, am I right?
    Am I wasting my time with this imaginary 16bit conversion?
    Is there ANY way to take that original Tiff image and convert it to 16bit jpeg without the Default 8bit?  I have been trying all kinds of things.  I even have asked my web guy.  My web guy says that 8-bit is unexceptable for printing, even for web.
    Could this have anything to do with my computer and scanner?
    I have the iMAC OS X 10.8.3 (3.2 GHz) 8 GB memory.
    And I also have an Epson Expression 10000XL graphic arts scanner capable of scanniing at 48bit color.
    This color stuff Really matters!  It MATTERS!  I HAve FINE art files.  I am already losing so much quality with the jpeg conversion. (which I am required to do for SmugMug, in addition to compressing all my files to 50mb or Under)
    Anyone who knows anything that could help me would be much appreciated. 
    Aloha,
    -Melissa

    First of all jpeg is 8 bit only there is no way to save as a 16 or 32 bit jpg, just does not exist. Secondly people print in 8 bit all the time and most if not all web graphics are in 8 bit as that is the only way to view it as there is no 16 bit or 32 bit monitors to view it. All but a few pro monitors are 8 bit monitors.
    If you care about the color gamut and want the full range of color that 16 and 32 bit provide, then why jpg? Jpg by its own nature throws out color just to compress, thats why it is popular on the web, because of its small file size not its quality. If you need 16 or 32 bit for anything it must be in a format that supports that color depth.
    That being said a jpg image at 8 bit will display 16+ million colors,  256 shades of red, 256 shades of green and 256 shades of blue.
    Now here is where I think your bit information is off. a jpg image is a 24 bit image that will produce 8 bits of red, 8 bits of green and 8 bits of blue.
    The 8, 16 and 32 are per channel not total color information.
    If the overall image was 8 bits, the image would be gayscale.

  • Converting a pdf document to a jpeg image C#

    HI There,
    How can I convert a pdf document to a jpeg image using c sharp? I need to do this on a web application. If someone can help me out with some code that would be great.
    Sean - thanks in advance

    The information provided by Aandi is unfortunately out of date. The Adobe PDF Library is obtained through Datalogics and has a JNI, Java, and .NET interface available. Additionally while the Adobe PDF Library with the .NET interface would provide the functionality you seek it is overkill.
    PDF2IMG from Datalogics has a COM component available that can be accessed via C# to convert PDF to most image formats.
    Michael Lee
    www.datalogics.com
    blog.worldofpdf.com

  • Convert colour images to grayscale images & get pixel data from them

    Is the code below correct to convert colour images to grayscale images in Java?
    public void convertToGrayscale (String sourceName,String destName) throws Exception {
    JPEGImageDecoder decoder=JPEGCodec.createJPEGDecoder(new FileInputStream(sourceName));
    JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(new FileOutputStream(destName));
    BufferedImage sourceImg=decoder.decodeAsBufferedImage();
    BufferedImageOp op =new ColorConvertOp(
              ColorSpace.getInstance(ColorSpace.CS_GRAY),null);
         BufferedImage destImg = op.filter(sourceImg,null);
    encoder.encode(destImg);
    decoder = null;
    encoder = null;
    When I get grayscale images from the code below, I would like to access the pixels of those images. So I tried to do:
    byte[] dd=((DataBufferByte)mImage.getRaster().getDataBuffer()).getData();
    BUT the data result array is not 0-255. Could anyone suggest how to obtain pixel data from grayscale images?
    In case that my code shown is not correct or suitable, please give your advice. What I would like to do are in the steps as follows:
    1 change 100*70 jpeg-images to 100*70 grayscale images.
    2 create two dimensional array of pixel data (example [100][70]) from converted images. The number in the array should be between 0-255, right??? And 0 refers to black colour and 255 refers to white colour???
    I am confused about grayscale images. Please help.
    Thank you so much

    I am not sure i understand what is the problem exactly.
    Structure of DataBuffer is described by SampleModel used by same Raster
    object. E.g. it might be 1 byte per xipex or 4 bytes per pixel.
    In your example convertToGrayscale saves images to file as JPEG and
    it seems you later read it back. It is possible what image you read back
    is not greyscale but ARGB and data buffer has different format.
    Technically, if you just need level of grey you may simply
    call getRGB on your output image. Grey is uniform mix of R, G and B.
    Also, instead of ColorConverOp you may dimply create output image of
    grayscale type and draw your color input image with drawImage().
    If none of these helps please try to provide more details.

Maybe you are looking for

  • Is LION 10.7.4 from App Store compatible with mid-2012 Macbook Pro 15"?

    I just downloaded lion 10.7.4 from the app store, copied it to a pen drive in the right way (which makes it bootable & tested that and it boots on a 2008 MBP). Connected that pen drive to my 2012 MBP, booted by pressing the alt key, and when i select

  • I can't get airdrop to work between iPhone 5 and Macbook Air.

    Can anyone tell me how to use airdrop between iPhone and Macbook?

  • CLIENT_CREATE_FAILED error in the Call Adapter pipeline

    Hi, all.   i think i've almost done the configuration of XI 3.0(CI + 2 DIs).   SXI_CACHE, SLDCHECK, import of IR, ID objects ...etc. are O.K.   But when i really run some scenarios of,   File Adapter --> XI --> ABAP Proxy or   ABAP Proxy --> XI --> J

  • JSR75 Writing a file

    Hi, I writing a small application, where i want to save a string in a text file in the device file system using JSR75 I know that it supports the writing to the files The flow of the application is 1.i will first chk whether a directory "ABC" exists

  • Automatic export for Masters

    Hi, I´ve 50 small films (FCP7) that I want to export as "Quicktime Movies>Make Movies Self-Contained" to backup as masters. Is there a way to export all of them in an auto mode instead of - open a project, export, save, etc, etc one-by-one? Open all