ViPLab - Weekly report 20161227

Preview:

Citation preview

Image Processing

ViPLabProfessor: Pei-Jun LeeResearcher: Bui Trong An

Multi-focus and Multi-cuesWeekly Report Dec 27th 2016

Outline

- Implemented- Problems- To do expected

Input Image

Follow Chart

Source Image

Convert to Mat Object Thresholding Noise removal

sure background area

Finding sure foreground area

Finding unknown region

Convert to Bitmap

Export Image

Follow Code public void Progress2016DecWeek4(){ //Convert Image to gray Image processedMat1 = imageBasicProcessing1.ConvertToGrayMat(inputMat1); processedMat2 = imageBasicProcessing2.ConvertToGrayMat(inputMat2);

//Reference document: http://docs.opencv.org/trunk/d3/db4/tutorial_py_watershed.html Imgproc.threshold(processedMat1, processedMat1, 0, 255, Imgproc.THRESH_BINARY_INV + Imgproc.THRESH_OTSU); Imgproc.threshold(processedMat2, processedMat2, 0, 255, Imgproc.THRESH_BINARY_INV + Imgproc.THRESH_OTSU);

//# noise removal Mat kernel = zeros(3,3,CvType.CV_8U); Mat opening1 = new Mat(); Mat opening2 = new Mat(); Imgproc.morphologyEx(processedMat1, opening1, Imgproc.MORPH_OPEN, kernel); Imgproc.morphologyEx(processedMat2, opening2, Imgproc.MORPH_OPEN, kernel);

//# sure background area Mat sure_bg1 = new Mat(processedMat1.size(),CvType.CV_8U); Mat sure_bg2 = new Mat(processedMat2.size(),CvType.CV_8U); Imgproc.dilate(opening1,sure_bg1,kernel,new Point(),3); Imgproc.dilate(opening2,sure_bg2,kernel,new Point(),3);

//# Finding sure foreground area Mat distTransform1 = new Mat(); Mat distTransform2 = new Mat(); Imgproc.distanceTransform(opening1,distTransform1,Imgproc.DIST_L2,5); Imgproc.distanceTransform(opening2, distTransform2, Imgproc.DIST_L2,5); Mat sure_fg1 = new Mat(processedMat1.size(),CvType.CV_8U); Mat sure_fg2 = new Mat(processedMat2.size(),CvType.CV_8U); Imgproc.threshold(distTransform1, sure_fg1, 0.7*Core.minMaxLoc(distTransform1).maxVal,255,0); Imgproc.threshold(distTransform2, sure_fg2, 0.7*Core.minMaxLoc(distTransform2).maxVal,255,0);

//# Finding unknown regions Core.subtract(sure_bg1, sure_fg1, processedMat1 , new Mat(), CvType.CV_8U); Core.subtract(sure_bg2, sure_fg2, processedMat2, new Mat(), CvType.CV_8U);

//Show Image ShowImage(processedImageView1, processedMat1); ShowImage(processedImageView2, processedMat2); }

Result Image

Problem

Problem

//# noise removalMat kernel = zeros(3,3,CvType.CV_8U);

//# sure background areaImgproc.dilate(opening1,sure_bg1,kernel,new Point(),3);

//# Finding sure foreground areaImgproc.distanceTransform(opening1,distTransform1,Imgproc.DIST_L2,5);Imgproc.threshold(distTransform1, sure_fg1, 0.7*Core.minMaxLoc(distTransform1).maxVal,255,0);

//# Finding unknown regionsCore.subtract(sure_bg1, sure_fg1, processedMat1 , new Mat(), CvType.CV_8U);

To do expected

- Complete detect Object for 2 original Image (near focus and far focus images)