Ignore:
Timestamp:
2019-10-21T21:45:10+13:00 (5 years ago)
Author:
cpb16
Message:

final01. Need Map results still

File:
1 edited

Legend:

Unmodified
Added
Removed
  • other-projects/is-sheet-music-encore/trunk/image-identification-dev-02/image-identification-development/src/MainMorph.java

    r33458 r33589  
    6666
    6767import static org.opencv.core.Core.FILLED;
     68import static org.opencv.core.Core.calcCovarMatrix;
    6869import static org.opencv.core.CvType.CV_8UC3;
    6970import static org.opencv.highgui.HighGui.createJFrame;
     
    193194            //Variables
    194195            System.out.println("Running Code version: " + CODE_VERSION + " Image Version: " +IMAGE_VERSION);
    195             Mat mid = new Mat();
    196196            Mat edgesDetectedRGB = new Mat();
    197197            Mat clustersFoundRGB = new Mat();
     
    209209            //String default_file =hiresDirectory+"BK/NotSheetMusic/aeu.ark+=13960=t2q53nq6w-6.png";
    210210            //String default_file =hiresDirectory+"BK/NotSheetMusic/aeu.ark+=13960=t9z03w65z-4.png";
     211            //String default_file =hiresDirectory+"BK/NotSheetMusic/loc.ark+=13960=t50g4443d-5.png";
    211212            //String default_file =hiresDirectory+"MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-1.png";
    212213            //String default_file =hiresDirectory+"MU/SheetMusic/emu.010001066823-9.png";
     
    234235            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-1.png";  //Image evaluation
    235236            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-2.png";  //large numbers
     237            //String default_file = hiresDirectory+ "MU/SheetMusic/mdp.39015096400919-9.png";
    236238            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-3.png";
    237             String default_file = hiresDirectory+"/MU/SheetMusic/mdp.39015080921409-9.png";
     239            //String default_file = hiresDirectory+"/MU/SheetMusic/mdp.39015080921409-9.png";
    238240            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-4.png";
    239241            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-5.png";
     
    242244            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-8.png";
    243245            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-9.png";
     246            String default_file = hiresDirectory+"/MU/SheetMusic/mdp.39015096398899-4.png";
    244247
    245248
     
    260263            Mat original = Imgcodecs.imread(filename, Imgcodecs.IMREAD_GRAYSCALE);
    261264            System.out.println("Width: " + original.width() + " Height: " + original.height());
    262             Mat binarizedOriginal = original.clone();
     265            Mat binarized = original.clone();
    263266           
    264             Imgproc.adaptiveThreshold(original, binarizedOriginal,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
     267            //Imgproc.adaptiveThreshold(original, binarized,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
    265268            //TEST PARAMETERSImgproc.adaptiveThreshold(original, edgesDetected,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 531,1);
    266269            //Imgproc.threshold(original,original, 127, 255, Imgproc.THRESH_BINARY);
    267 
     270            //************************
     271            //Argument Setup
     272            //************************
     273            int tempvariable = 0;
     274            if (tempvariable ==1){
     275                Imgproc.adaptiveThreshold(original, binarized, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY_INV, 1001, 5);
     276            }
     277            else {
     278
     279                int borderIgnoreAmount = 0;
     280                double divisor;
     281                switch (borderIgnoreAmount) {
     282                    case 5:
     283                        divisor = 40;
     284                        break;
     285                    case 10:
     286                        divisor = 20;
     287                        break;
     288                    case 20:
     289                        divisor = 10;
     290                        break;
     291                    case 40:
     292                        divisor = 5;
     293                        break;
     294                    case 0:
     295                        divisor = -1;
     296                        break;
     297                    default:
     298                        divisor = -1;
     299                }
     300                if (divisor != -1) {
     301                    Mat mid = new Mat();
     302                    Imgproc.adaptiveThreshold(original, mid, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
     303                    double maxX = mid.size().width;
     304                    double maxY = mid.size().height;
     305                    Point cp1 = new Point(maxX / divisor, maxY / divisor);
     306                    Point cp2 = new Point(maxX - cp1.x, maxY - cp1.y);
     307                    Rect rectCrop = new Rect(cp1, cp2);
     308                    binarized = mid.submat(rectCrop);
     309                } else {
     310                    Imgproc.adaptiveThreshold(original, binarized, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
     311                }
     312
     313                System.out.println("Width: " + binarized.width() + " Height: " + binarized.height());
     314            }
    268315
    269316            //****************MORPHOLOGY****************************************************************************************
     
    276323            //dynamic morphology??
    277324            if(CODE_VERSION == 1) {
    278                 int hori = binarizedOriginal.width();
    279                 int vert = binarizedOriginal.height();
     325                int hori = binarized.width();
     326                int vert = binarized.height();
    280327                //Find ratio between 100 and width and 100 and height
    281328                int divX = hori/10;
     
    284331                int sizeY = (vert/divY) * 10;
    285332
    286                 Mat test = binarizedOriginal.clone();
     333                Mat test = binarized.clone();
    287334                imageViewer("Original", test);
    288335
     
    326373
    327374                //MAKE SURE BLACK & WHITE
    328                 Mat test = binarizedOriginal.clone();
     375                Mat test = binarized.clone();
    329376                imageViewer("00 Binarized Original", test);
    330377
     
    366413            //Tutorial/Demo Code
    367414            if (CODE_VERSION == 3) {
    368                 Mat horizontal = binarizedOriginal.clone();
    369                 Mat vertical = binarizedOriginal.clone();
     415                Mat horizontal = binarized.clone();
     416                Mat vertical = binarized.clone();
    370417                // Specify size on horizontal axis
    371418                int horizontal_size = horizontal.cols() / 50;
     
    420467                imageViewer("original", original);
    421468
    422                 Mat test = binarizedOriginal.clone();
    423                 Mat pre = binarizedOriginal.clone();
     469                Mat test = binarized.clone();
     470                Mat pre = binarized.clone();
    424471                Mat dst = new Mat();
    425472
     
    534581            //Better morphology attempt - dynamic
    535582            if(CODE_VERSION == 5) {
    536                 int hori = binarizedOriginal.width();
    537                 int vert = binarizedOriginal.height();
     583                int hori = binarized.width();
     584                int vert = binarized.height();
    538585                //Find ratio between 100 and width and 100 and height
    539586                int sizeX100 = 10 * (hori/68);
     
    551598                imageViewer("original", original);
    552599
    553                 Mat test = binarizedOriginal.clone();
     600                Mat test = binarized.clone();
    554601                imageViewer("00 Inverse Binarized Original", test);
    555602
     
    643690                imageViewer("original", original);
    644691
    645                 Mat src = binarizedOriginal.clone();
    646                 Mat test = binarizedOriginal.clone();
     692                Mat src = binarized.clone();
     693                Mat test = binarized.clone();
    647694                Mat mask = new Mat();
    648695                Mat dst = new Mat();
     
    729776                imageViewer("original", original);
    730777
    731                 Mat test = binarizedOriginal.clone();
     778                Mat test = binarized.clone();
    732779
    733780
     
    738785                //Large Object Removal
    739786                //************************************
    740                 Mat srcLOR = binarizedOriginal.clone();
     787                Mat srcLOR = binarized.clone();
    741788                Mat maskLOR = new Mat();
    742789                Mat dstLOR = new Mat();
     
    9681015                    //Imgproc.adaptiveThreshold(original1, original,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
    9691016
    970                     Mat test = binarizedOriginal.clone();
     1017                    Mat test = binarized.clone();
    9711018                    //************************************
    9721019                    //Large Object Removal
    9731020                    //************************************
    974                     Mat srcLOR = binarizedOriginal.clone();
     1021                    Mat srcLOR = binarized.clone();
    9751022                    Mat maskLOR = new Mat();
    9761023                    Mat dstLOR = new Mat();
     
    11581205            //Reset after david chat
    11591206            if(CODE_VERSION == 9){
     1207                int areaCounter=0;
    11601208                //Display Original
    11611209                imageViewer("original", original);
    1162                 imageViewer("000 Inverse Binarized Original", binarizedOriginal);
     1210                imageViewer("000 Inverse Binarized Original", binarized);
    11631211
    11641212
     
    11661214                //1. Large Object Remover
    11671215                //************************************
    1168                 Mat srcLOR = binarizedOriginal.clone();
     1216                Mat srcLOR = binarized.clone();
    11691217                Mat maskLOR = new Mat();
    11701218                Mat dstLOR = new Mat();
     
    11761224
    11771225                //Heal the large items
    1178                 Mat healLOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(25,25));
     1226                Mat healLOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(25,25)); //5,5
    11791227                Imgproc.morphologyEx(maskLOR,maskLOR, Imgproc.MORPH_CLOSE, healLOR);
    11801228                imageViewer("002 heal objects in mask", maskLOR);
    11811229
    11821230                //IsolateLarge
    1183                 Mat isolateLargeLOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(30,30));
     1231                Mat isolateLargeLOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(30,30)); //8,8
    11841232                Imgproc.morphologyEx(maskLOR,maskLOR, Imgproc.MORPH_OPEN, isolateLargeLOR);
    11851233                imageViewer("003 Isolate large", maskLOR);
     
    12541302
    12551303                //4. Classify like line clusters.
    1256                 Mat base = binarizedOriginal.clone();
     1304                Mat base = binarized.clone();
    12571305                //***********************************
    12581306                //3. Isolate straight lines
    12591307                //***********************************
    12601308                //Heal lines
    1261                 Mat healISL = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(82,1));
     1309                Mat healISL = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(86,1));
    12621310                Imgproc.morphologyEx(dstLOR,base, Imgproc.MORPH_OPEN, healISL);
    12631311                imageViewer("202 heal objects in mask", base);
     
    13101358                        System.out.println("i:"+ i + " Height: " + boundRect[i].height);
    13111359                        if(boundRect[i].width > 300){
     1360                            areaCounter++;
    13121361                            System.out.println("i:"+ i + " Width: " +  boundRect[i].width);
    13131362                            Imgproc.rectangle(rectOutput, boundRect[i].tl(), boundRect[i].br(), new Scalar(255, 0, 0), 20);
     
    13181367
    13191368                imageViewer("4000 Rect found", rectOutput);
     1369                System.out.println(areaCounter);
    13201370
    13211371
     
    13271377                Pair returnVariables = new Pair();
    13281378                int areaCounter=0;
     1379
     1380
    13291381                //Mat original = Imgcodecs.imread(filename, Imgcodecs.IMREAD_GRAYSCALE);
    1330                 //Mat binarizedOriginal = original.clone();
    1331                 //Imgproc.adaptiveThreshold(original, binarizedOriginal,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
     1382                //Mat binarized = original.clone();
     1383                //Mat mid = new Mat();
     1384                //if(borderCrop > 0){
     1385                    //Imgproc.adaptiveThreshold(original, mid,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, 2);
     1386                    //double maxX = mid.size().width;
     1387                    //double maxY = mid.size().height;
     1388                    //Point cp1 = new Point(maxX/10, maxY/10);
     1389                    //Point cp2 = new Point(maxX - cp1.x, maxY -cp1.y);
     1390                    //Rect rectCrop = new Rect(cp1, cp2);
     1391                    //binarized = mid.submat(rectCrop);
     1392                //}
     1393                //else{
     1394                //Imgproc.adaptiveThreshold(original, binarized,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
     1395                //}
     1396
     1397
    13321398                try{
    13331399                    //************************************
    13341400                    //1. Large Object Remover
    13351401                    //************************************
    1336                     Mat srcLOR = binarizedOriginal.clone();
     1402                    Mat srcLOR = binarized.clone();
    13371403                    Mat maskLOR = new Mat();
    13381404                    Mat dstLOR = new Mat();
     
    13531419                    srcLOR.copyTo(dstLOR, maskLOR);
    13541420
    1355                     Mat base = binarizedOriginal.clone();
     1421                    Mat base = binarized.clone();
    13561422                    //***********************************
    13571423                    //3. Isolate straight lines
Note: See TracChangeset for help on using the changeset viewer.