Esempio n. 1
0
        /**
         * Outputs displayable image of image channel to be corrected.
         * @param layer the channel corrected
         * @return true if successful
         **/
        private void outputDisplayableBase(int layer)
        {
            float[] array;
            int     width = base_dimensions[0];
            int     height = base_dimensions[1];
            float   value, value16bpp;

            string image_name = (string)dropdown_imageLayer.Items[layer];

            array = new float[width * height];
            Array.Copy(base_data, width * height * layer, array, 0, width * height);

            FREE_IMAGE_FORMAT     format     = FREE_IMAGE_FORMAT.FIF_TIFF;
            FREE_IMAGE_TYPE       type       = FREE_IMAGE_TYPE.FIT_FLOAT;
            FREE_IMAGE_SAVE_FLAGS save_flags = FREE_IMAGE_SAVE_FLAGS.TIFF_NONE;
            FreeImageBitmap       image      = new FreeImageBitmap(width, height, type);

            float maxValue = Enumerable.Range(0, array.Length).Max(m => array[m]);
            float minValue = Enumerable.Range(0, array.Length).Min(m => array[m]);

            for (int j = 0; j < height; ++j)
            {
                Scanline <float> scanline = image.GetScanline <float>(j);
                for (int k = 0; k < width; ++k)
                {
                    value      = array[width * j + k];
                    value16bpp = (1.0f / (maxValue - minValue) * (value - minValue));
                    scanline.SetValue(value16bpp, k);
                }
            }
            image.RotateFlip(base_orientation);
            image.Save("./Workspace/" + image_name + "_base_displayable.tiff", format, save_flags);
        }
Esempio n. 2
0
        /**
         * Outputs .tiff file to be read into Argo Solution as input parameter
         * @param layer the channel corrected
         * @return true if successful
         **/
        private bool outputBase(int layer)
        {
            float[] array;
            int     width  = base_dimensions[0];
            int     height = base_dimensions[1];
            float   value;

            if (layer == -1)
            {
                return(false);
            }

            string image_name = (string)dropdown_imageLayer.Items[layer];

            array = new float[width * height];
            Array.Copy(base_data, width * height * layer, array, 0, width * height);

            FREE_IMAGE_FORMAT     format     = FREE_IMAGE_FORMAT.FIF_TIFF;
            FREE_IMAGE_TYPE       type       = FREE_IMAGE_TYPE.FIT_FLOAT;
            FREE_IMAGE_SAVE_FLAGS save_flags = FREE_IMAGE_SAVE_FLAGS.TIFF_NONE;
            FreeImageBitmap       image      = new FreeImageBitmap(width, height, type);

            for (int j = 0; j < height; ++j)
            {
                Scanline <float> scanline = image.GetScanline <float>(j);
                for (int k = 0; k < width; ++k)
                {
                    value = array[width * j + k];
                    scanline.SetValue(value, k);
                }
            }
            image.RotateFlip(base_orientation);
            image.Save("./Workspace/" + image_name + "_base.tiff", format, save_flags);
            return(true);
        }
Esempio n. 3
0
        /**
         */
        private void updateImages(int index)
        {
            float[] array;
            float   maxValue, minValue, value;
            int     value16bpp;
            Bitmap  bitmap;
            Color   color;
            Image   old_bitmap;

            if (base_dimensions != null)
            {
                int width  = base_dimensions[0];
                int height = base_dimensions[1];

                array = new float[width * height];
                Array.Copy(base_data, width * height * index, array, 0, width * height);

                FreeImageBitmap image_bitmap = new FreeImageBitmap(new Bitmap(width, height), width, height);
                maxValue = Enumerable.Range(0, array.Length).Max(m => array[m]);
                minValue = Enumerable.Range(0, array.Length).Min(m => array[m]);
                for (int j = 0; j < height; ++j)
                {
                    Scanline <int> scanline = image_bitmap.GetScanline <int>(j);

                    for (int k = 0; k < width; ++k)
                    {
                        value      = array[width * j + k];
                        value16bpp = (int)(255.0f / (maxValue - minValue) * (value - minValue));
                        color      = Color.FromArgb(value16bpp, value16bpp, value16bpp);
                        scanline.SetValue(color.ToArgb(), k);
                    }
                }

                image_bitmap.RotateFlip(base_orientation);
                bitmap = image_bitmap.ToBitmap();
                image_bitmap.Dispose();

                old_bitmap       = image_base.Image;
                image_base.Image = bitmap;
                if (old_bitmap != null)
                {
                    old_bitmap.Dispose();
                }
            }



            if (sliver_dimensions != null)
            {
                int width  = sliver_dimensions[0];
                int height = sliver_dimensions[1];

                array = new float[width * height];
                Array.Copy(sliver_data, width * height * index, array, 0, width * height);
                FreeImageBitmap image_bitmap = new FreeImageBitmap(new Bitmap(width, height), width, height);
                maxValue = Enumerable.Range(0, array.Length).Max(m => array[m]);
                minValue = Enumerable.Range(0, array.Length).Min(m => array[m]);
                for (int j = 0; j < height; ++j)
                {
                    Scanline <int> scanline = image_bitmap.GetScanline <int>(j);

                    for (int k = 0; k < width; ++k)
                    {
                        value      = array[width * j + k];
                        value16bpp = (int)(255.0f / (maxValue - minValue) * (value - minValue));
                        color      = Color.FromArgb(value16bpp, value16bpp, value16bpp);
                        scanline.SetValue(color.ToArgb(), k);
                    }
                }

                image_bitmap.RotateFlip(sliver_orientation);
                bitmap = image_bitmap.ToBitmap();
                image_bitmap.Dispose();

                old_bitmap         = image_sliver.Image;
                image_sliver.Image = bitmap;
                if (old_bitmap != null)
                {
                    old_bitmap.Dispose();
                }
            }
        }