Esempio n. 1
0
        private static bool DepthFromFocusProc(HImage image, string imgSaveFolder, string imgSaveName)
        {
            bool ret = false;

            try
            {
                HObject ho_img1 = new HObject();
                HObject ho_img2 = new HObject();
                HObject ho_img3 = new HObject();
                HOperatorSet.Decompose3(image, out ho_img1, out ho_img2, out ho_img3);

                HTuple filter = new HTuple("highpass");
                filter.Append(7);
                filter.Append(7);
                HTuple selection = new HTuple("next_maximum");

                HOperatorSet.ChannelsToImage(ho_img1, out ho_img1);
                HObject ho_Depth1      = new HObject();
                HObject ho_Confidence1 = new HObject();
                HOperatorSet.DepthFromFocus(ho_img1, out ho_Depth1, out ho_Confidence1, filter, selection);
                //Construct sharp image
                HObject ho_DepthHighConf1 = new HObject();
                HOperatorSet.MeanImage(ho_Depth1, out ho_DepthHighConf1, 11, 11);
                HObject ho_SharpImage1 = new HObject();
                HOperatorSet.SelectGrayvaluesFromChannels(ho_img1, ho_DepthHighConf1, out ho_SharpImage1);
                //Smooth depth map
                //HObject ho_ImageScaleMax1 = new HObject();
                //HOperatorSet.ScaleImageMax(ho_DepthHighConf1, out ho_ImageScaleMax1);
                //HObject ho_DepthMean1 = new HObject();
                //HOperatorSet.MeanImage(ho_ImageScaleMax1, out ho_DepthMean1, 51, 51);
                //HOperatorSet.WriteImage(ho_SharpImage1, "bmp", 0, imgSaveFolder + "\\SharpImage1.bmp");

                HOperatorSet.ChannelsToImage(ho_img2, out ho_img2);
                HObject ho_Depth2      = new HObject();
                HObject ho_Confidence2 = new HObject();
                HOperatorSet.DepthFromFocus(ho_img2, out ho_Depth2, out ho_Confidence2, filter, selection);
                //Construct sharp image
                HObject ho_DepthHighConf2 = new HObject();
                HOperatorSet.MeanImage(ho_Depth2, out ho_DepthHighConf2, 11, 11);
                HObject ho_SharpImage2 = new HObject();
                HOperatorSet.SelectGrayvaluesFromChannels(ho_img2, ho_DepthHighConf2, out ho_SharpImage2);
                //Smooth depth map
                //HObject ho_ImageScaleMax2 = new HObject();
                //HOperatorSet.ScaleImageMax(ho_DepthHighConf2, out ho_ImageScaleMax2);
                //HObject ho_DepthMean2 = new HObject();
                //HOperatorSet.MeanImage(ho_ImageScaleMax2, out ho_DepthMean2, 51, 51);
                //HOperatorSet.WriteImage(ho_SharpImage2, "bmp", 0, imgSaveFolder + "\\SharpImage2.bmp");

                HOperatorSet.ChannelsToImage(ho_img3, out ho_img3);
                HObject ho_Depth3      = new HObject();
                HObject ho_Confidence3 = new HObject();
                HOperatorSet.DepthFromFocus(ho_img3, out ho_Depth3, out ho_Confidence3, filter, selection);
                //Construct sharp image
                HObject ho_DepthHighConf3 = new HObject();
                HOperatorSet.MeanImage(ho_Depth3, out ho_DepthHighConf3, 11, 11);
                HObject ho_SharpImage3 = new HObject();
                HOperatorSet.SelectGrayvaluesFromChannels(ho_img3, ho_DepthHighConf3, out ho_SharpImage3);
                //Smooth depth map
                //HObject ho_ImageScaleMax3 = new HObject();
                //HOperatorSet.ScaleImageMax(ho_DepthHighConf3, out ho_ImageScaleMax3);
                //HObject ho_DepthMean3 = new HObject();
                //HOperatorSet.MeanImage(ho_ImageScaleMax3, out ho_DepthMean3, 51, 51);
                //HOperatorSet.WriteImage(ho_SharpImage3, "bmp", 0, imgSaveFolder + "\\SharpImage3.bmp");

                HObject ho_SharpImage = new HObject();
                HOperatorSet.Compose3(ho_SharpImage1, ho_SharpImage2, ho_SharpImage3, out ho_SharpImage);
                HOperatorSet.WriteImage(ho_SharpImage, "bmp", 0, imgSaveFolder + "\\" + imgSaveName);
                ho_SharpImage.Dispose();

                ret = true;
            }
            catch (HalconException hex)
            {
                Trace.WriteLine(hex.GetErrorMessage(), "HALCON error");
            }
            return(ret);
        }