Example #1
0
        private void loadDepthMapButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Title  = "Open depth map";
            ofd.Filter = "PNG Files|*.png" +
                         "|PFM Files|*.pfm" +
                         "|Bitmap Files|*.bmp" +
                         "|Gif Files|*.gif" +
                         "|JPEG Files|*.jpg" +
                         "|TIFF Files|*.tif" +
                         "|All Image types|*.png;*.pfm;*.bmp;*.gif;*.jpg;*.tif";

            ofd.FilterIndex = 7;
            ofd.FileName    = "";
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            if (depthMap != null)
            {
                depthMap.Dispose();
            }
            if (ofd.FileName.EndsWith(".pfm"))
            {
                depthMap = PortableFloatMap.LoadImage(ofd.FileName);
            }
            else
            {
                Bitmap depthMapLdr = (Bitmap)Image.FromFile(ofd.FileName);
                depthMap = depthMapLdr.ToFloatMap();
                depthMapLdr.Dispose();
            }
        }
Example #2
0
        private void buttonLoad_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Title  = "Open Image File";
            ofd.Filter = "PNG Files|*.png" +
                         "|PFM Files|*.pfm" +
                         "|Bitmap Files|*.bmp" +
                         "|Gif Files|*.gif" +
                         "|JPEG Files|*.jpg" +
                         "|TIFF Files|*.tif" +
                         "|All Image types|*.png;*.pfm;*.bmp;*.gif;*.jpg;*.tif";

            ofd.FilterIndex = 7;
            ofd.FileName    = "";
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            if (ofd.FileName.EndsWith(".pfm"))
            {
                if (inputHdrImage != null)
                {
                    inputHdrImage.Dispose();
                }
                inputHdrImage = PortableFloatMap.LoadImage(ofd.FileName);
                ReplaceLdrImage(ref inputLdrImage, inputHdrImage.ToBitmap(ToneMappingEnabled));
            }
            else
            {
                ReplaceLdrImage(ref inputLdrImage, (Bitmap)Image.FromFile(ofd.FileName));
                if (inputHdrImage != null)
                {
                    inputHdrImage.Dispose();
                }
                inputHdrImage = inputLdrImage.ToFloatMap();
            }
            imageTypeComboBox.SelectedIndex = 0; // TODO: select original better
            updatePictureBoxImage();

            if (outputHdrImage != null)
            {
                outputHdrImage.Dispose();
            }
            outputHdrImage = null;
            ReplaceLdrImage(ref outputLdrImage, null);

            imageSizeLabel.Text = String.Format("{0}x{1}", inputHdrImage.Width, inputHdrImage.Height);
        }
        public FloatMapImage FilterImage(FloatMapImage inputImage, FloatMapImage outputImage)
        {
            if (inputImage == null)
            {
                return(null);
            }

            if (inputImage.PixelFormat.HasAlpha())
            {
                inputImage = inputImage.PremultiplyByAlpha();
            }

            uint width  = inputImage.Width;
            uint height = inputImage.Height;

            if (width < 1 || height < 1)
            {
                return(null);
            }

            if (outputImage == null)
            {
                outputImage = new FloatMapImage(width, height, inputImage.PixelFormat);
            }

            FloatMapImage spreadingTable     = new FloatMapImage(width, height, inputImage.PixelFormat);
            FloatMapImage normalizationTable = new FloatMapImage(width, height, PixelFormat.Greyscale);

            //var blurMap = GetBlurMap(width, height);
            //blurMap.ToBitmap(true).Save("blurmap.png");
            //blurMap.Differentiate().ToBitmap(true).Save("blurmap-diff.png");

            Filter(inputImage, spreadingTable, normalizationTable);

            Normalize(spreadingTable, normalizationTable, outputImage);

            spreadingTable.Dispose();
            normalizationTable.Dispose();

            return(outputImage);
        }