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); }