viplab - weekly report 20161227
TRANSCRIPT
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)