Ignore:
Timestamp:
2019-09-04T14:45:52+12:00 (5 years ago)
Author:
cpb16
Message:

Started implementing Davids suggested morphology sequence, codeversion9

File:
1 edited

Legend:

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

    r33449 r33455  
    6969import static org.opencv.highgui.HighGui.createJFrame;
    7070import static org.opencv.highgui.HighGui.imshow;
     71import static org.opencv.imgcodecs.Imgcodecs.imread;
    7172import static org.opencv.imgcodecs.Imgcodecs.imwrite;
    7273
     
    205206            //!!!!!!!!!!!!!!!!!!!!!!!!!!!NOTNOT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    206207            //coo.31924062612282-9.png 8   lines
    207             //String default_file = directory+"NotSheetMusic/coo.31924062612282-9.png";
    208             //String default_file = directory+"NotSheetMusic/mdp.39015097852365-2.png";
    209208            //String default_file =testDirectory+"TestImages/NotNot/mdp.39015080972303-3.png"; //WHY GREY? DUE TO IMAGE LARGE, ZOOM IN
    210209            //String default_file =hiresDirectory+"BK/NotSheetMusic/aeu.ark+=13960=t2q53nq6w-6.png";
     
    214213            //String default_file =hiresDirectory+"MU/SheetMusic/bc.ark+=13960=t2j72dt1p-10.png";
    215214            //String default_file =hiresDirectory+"MU/SheetMusic/bc.ark+=13960=t2j72dt1p-7.png";
    216             String default_file =hiresDirectory+"MU/SheetMusic/coo.31924062612282-9.png";
     215            //String default_file =hiresDirectory+"MU/SheetMusic/coo.31924062612282-9.png";
    217216            //String default_file =hiresDirectory+"MU/NotSheetMusic/mdp.39015096363935-1.png";
    218217            //String default_file =hiresDirectory+"MU/SheetMusic/coo.31924062612282-9.png";
    219218            //String default_file = "/Scratch/cpb16/is-sheet-music-encore/image-identification-terminal/TestImages/hi-res-test-coo.31924062612282-9.png";
     219
     220            //String default_file = hiresDirectory+"/BK/NotSheetMusic/aeu.ark+=13960=t2s47k537-4.png"; //centre example
     221            //String default_file = hiresDirectory+"/BK/NotSheetMusic/aeu.ark+=13960=t3tt4xf2t-2.png"; //cross
    220222            //TestNew images used
    221 
    222             //String default_file = hiresDirectory+"/MU/SheetMusic/aeu.ark+=13960=t93787r1w-10.png";
    223             //String default_file = "hiresDirectory+"/MU/SheetMusic/bc.ark+=13960=t2j72dt1p-10.png";
    224             //String default_file = hiresDirectory+"/MU/SheetMusic/bc.ark+=13960=t2j72dt1p-7.png";  //Handwritten
    225             //String default_file = hiresDirectory+"/MU/SheetMusic/bc.ark+=13960=t2j72dt1p-8.png";  //Handwritten
    226             //String default_file = hiresDirectory+"/MU/SheetMusic/bc.ark+=13960=t2j72dt1p-9.png";    //Handwritten
    227             //String default_file = hiresDirectory+"/MU/SheetMusic/coo.31924062612282-9.png";
    228             //String default_file = hiresDirectory+"/MU/SheetMusic/dul1.ark+=13960=t2x41569k-10.png";
     223            //String default_file = hiresDirectory+"/MU/SheetMusic/aeu.ark+=13960=t93787r1w-10.png";    //Bleed
     224            //String default_file = hiresDirectory+"/MU/SheetMusic/bc.ark+=13960=t2j72dt1p-10.png";     //Handwritten
     225            //String default_file = hiresDirectory+"/MU/SheetMusic/bc.ark+=13960=t2j72dt1p-7.png";      //Handwritten 3072 4176
     226            //String default_file = hiresDirectory+"/MU/SheetMusic/bc.ark+=13960=t2j72dt1p-8.png";      //Handwritten
     227            //String default_file = hiresDirectory+"/MU/SheetMusic/bc.ark+=13960=t2j72dt1p-9.png";      //Handwritten
     228            String default_file = hiresDirectory+"/MU/SheetMusic/coo.31924062612282-9.png";           //Snippet
     229            //String default_file = hiresDirectory+"/MU/SheetMusic/dul1.ark+=13960=t2x41569k-10.png";   //Generated
    229230            //String default_file = hiresDirectory+"/MU/SheetMusic/dul1.ark+=13960=t2x41569k-7.png";
    230231            //String default_file = hiresDirectory+"/MU/SheetMusic/dul1.ark+=13960=t2x41569k-8.png";
    231232            //String default_file = hiresDirectory+"/MU/SheetMusic/dul1.ark+=13960=t2x41569k-9.png";
    232             //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-10.png";
    233             //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-1.png";
    234             //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-2.png";
     233            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-10.png"; //contentpage
     234            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-1.png";  //Image evaluation
     235            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-2.png";  //large numbers
    235236            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-3.png";
    236237            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-4.png";
     
    240241            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-8.png";
    241242            //String default_file = hiresDirectory+"/MU/NotSheetMusic/aeu.ark+=13960=t0dv28v9r-9.png";
    242 
    243 
    244 
    245 
    246 
    247 
    248 
    249 
    250 
    251 
    252 
    253 
    254243
    255244
     
    268257
    269258            // Load an image
    270             Mat original1 = Imgcodecs.imread(filename, Imgcodecs.IMREAD_GRAYSCALE);
    271             System.out.println("Width: " + original1.width() + " Height: " + original1.height());
    272             Mat original = original1.clone();
     259            Mat original = Imgcodecs.imread(filename, Imgcodecs.IMREAD_GRAYSCALE);
     260            System.out.println("Width: " + original.width() + " Height: " + original.height());
     261            Mat binarizedOriginal = original.clone();
    273262           
    274             Imgproc.adaptiveThreshold(original1, original,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
     263            Imgproc.adaptiveThreshold(original, binarizedOriginal,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
    275264            //TEST PARAMETERSImgproc.adaptiveThreshold(original, edgesDetected,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 531,1);
    276265            //Imgproc.threshold(original,original, 127, 255, Imgproc.THRESH_BINARY);
     
    286275            //dynamic morphology??
    287276            if(CODE_VERSION == 1) {
    288                 int hori = original.width();
    289                 int vert = original.height();
     277                int hori = binarizedOriginal.width();
     278                int vert = binarizedOriginal.height();
    290279                //Find ratio between 100 and width and 100 and height
    291280                int divX = hori/10;
     
    294283                int sizeY = (vert/divY) * 10;
    295284
    296                 Mat test = original.clone();
     285                Mat test = binarizedOriginal.clone();
    297286                imageViewer("Original", test);
    298287
     
    336325
    337326                //MAKE SURE BLACK & WHITE
    338                 Mat test = original.clone();
     327                Mat test = binarizedOriginal.clone();
    339328                imageViewer("00 Binarized Original", test);
    340329
     
    377366            //Tutorial/Demo Code
    378367            if (CODE_VERSION == 3) {
    379                 Mat horizontal = original.clone();
    380                 Mat vertical = original.clone();
     368                Mat horizontal = binarizedOriginal.clone();
     369                Mat vertical = binarizedOriginal.clone();
    381370                // Specify size on horizontal axis
    382371                int horizontal_size = horizontal.cols() / 50;
     
    429418
    430419                //Display Original
    431                 imageViewer("original", original1);
    432 
    433                 Mat test = original.clone();
    434                 Mat pre = original.clone();
     420                imageViewer("original", original);
     421
     422                Mat test = binarizedOriginal.clone();
     423                Mat pre = binarizedOriginal.clone();
    435424                Mat dst = new Mat();
    436425
     
    545534            //Better morphology attempt - dynamic
    546535            if(CODE_VERSION == 5) {
    547                 int hori = original.width();
    548                 int vert = original.height();
     536                int hori = binarizedOriginal.width();
     537                int vert = binarizedOriginal.height();
    549538                //Find ratio between 100 and width and 100 and height
    550539                int sizeX100 = 10 * (hori/68);
     
    560549                System.out.println(hori + " " + vert + " "  + sizeX1 + " " + sizeY1);
    561550                //Display Original
    562                 imageViewer("original", original1);
    563 
    564                 Mat test = original.clone();
     551                imageViewer("original", original);
     552
     553                Mat test = binarizedOriginal.clone();
    565554                imageViewer("00 Inverse Binarized Original", test);
    566555
     
    629618                //Get source image and binerize
    630619                Mat src = Imgcodecs.imread(path, Imgcodecs.IMREAD_GRAYSCALE);
    631                 Imgproc.adaptiveThreshold(original1, src,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
     620                Imgproc.adaptiveThreshold(original, src,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
    632621                imageViewer("src", src);
    633622
     
    652641
    653642                //Display Original
    654                 imageViewer("original", original1);
    655 
    656                 Mat src = original.clone();
    657                 Mat test = original.clone();
     643                imageViewer("original", original);
     644
     645                Mat src = binarizedOriginal.clone();
     646                Mat test = binarizedOriginal.clone();
    658647                Mat mask = new Mat();
    659648                Mat dst = new Mat();
     
    738727
    739728                //Display Original
    740                 imageViewer("original", original1);
    741 
    742                 Mat test = original.clone();
     729                imageViewer("original", original);
     730
     731                Mat test = binarizedOriginal.clone();
    743732
    744733
     
    749738                //Large Object Removal
    750739                //************************************
    751                 Mat srcLOR = original.clone();
     740                Mat srcLOR = binarizedOriginal.clone();
    752741                Mat maskLOR = new Mat();
    753742                Mat dstLOR = new Mat();
     
    976965                    //Imgproc.adaptiveThreshold(original1, original,255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY_INV, 15, THRESHOLD_C);
    977966
    978                     Mat test = original.clone();
     967                    Mat test = binarizedOriginal.clone();
    979968                    //************************************
    980969                    //Large Object Removal
    981970                    //************************************
    982                     Mat srcLOR = original.clone();
     971                    Mat srcLOR = binarizedOriginal.clone();
    983972                    Mat maskLOR = new Mat();
    984973                    Mat dstLOR = new Mat();
     
    11661155            //Reset after david chat
    11671156            if(CODE_VERSION == 9){
    1168                 //1. Remove large items (needs to be larger kernel, should not remove bar lines)
    1169                 //2. Remove text
    1170                 //3. Standard plan from presentation
     1157                //Display Original
     1158                imageViewer("original", original);
     1159                Mat base = binarizedOriginal.clone();
     1160                imageViewer("00 Inverse Binarized Original", base);
     1161
     1162
     1163                //************************************
     1164                //1. Large object Remover
     1165                //************************************
     1166                Mat srcLOR = binarizedOriginal.clone();
     1167                Mat maskLOR = new Mat();
     1168                Mat dstLOR = new Mat();
     1169
     1170                //Remove small objects in prep for masking  (De-Noise)
     1171                Mat removeSmallLOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(5,5));
     1172                Imgproc.morphologyEx(srcLOR,maskLOR, Imgproc.MORPH_OPEN, removeSmallLOR);
     1173                imageViewer("001 De-noise", maskLOR);
     1174
     1175                //heal the large items
     1176                Mat healLOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(10,10));
     1177                Imgproc.morphologyEx(maskLOR,maskLOR, Imgproc.MORPH_CLOSE, healLOR);
     1178                imageViewer("002 heal objects in mask", maskLOR);
     1179
     1180                //IsolateLarge
     1181                Mat isolateLargeLOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(20,20));
     1182                Imgproc.erode(maskLOR,maskLOR,isolateLargeLOR);
     1183                imageViewer("003 Isolate large", maskLOR);
     1184
     1185                Core.bitwise_not(maskLOR,maskLOR);
     1186                srcLOR.copyTo(dstLOR, maskLOR);
     1187                imageViewer("100 Large Items Removed", dstLOR);
     1188
     1189                //***********************************
     1190                //2. Text-sized Object Removal
     1191                //***********************************
     1192
     1193                Mat srcTOR = dstLOR.clone();
     1194                Mat maskTOR = new Mat();
     1195                Mat dstTOR = new Mat();
     1196
     1197                //Remove small objects in prep for masking (De-Noise)
     1198                Mat removeSmallTOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(5,5));
     1199                Imgproc.morphologyEx(srcTOR,maskTOR, Imgproc.MORPH_OPEN, removeSmallTOR);
     1200                imageViewer("101 Remove Small from mask", maskTOR);
     1201
     1202                //heal the large items
     1203                Mat healTOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(10,10));
     1204                Imgproc.morphologyEx(maskTOR,maskTOR, Imgproc.MORPH_CLOSE, healTOR);
     1205                imageViewer("102 heal objects in mask", maskTOR);
     1206
     1207                //Highlight black outline
     1208                Mat highlightLargeTOR = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(10,10));
     1209                Imgproc.erode(maskTOR,maskTOR,highlightLargeTOR);
     1210                imageViewer("103 highlight objects", maskTOR);
     1211
     1212                Core.bitwise_not(maskTOR, maskTOR);
     1213                srcTOR.copyTo(dstTOR, maskTOR);
     1214                imageViewer("200 Black outline Removed", dstTOR);
     1215
     1216                //***********************************
     1217                //3. Standard plan from presentation (TAKEN FROM CODE VERSION 5)
     1218                //***********************************
     1219                Mat kernelErode = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(20,2));
     1220                Imgproc.erode(dstTOR,base,kernelErode);
     1221                imageViewer("201 Erode plus pre", base);
     1222
     1223                Mat kernelDilate = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(20,2));
     1224                Imgproc.dilate(base,base,kernelDilate);
     1225                imageViewer("202 Dilate", base);
     1226
     1227                Mat kernelClosing = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(20,5));
     1228                Imgproc.morphologyEx(base, base, Imgproc.MORPH_CLOSE, kernelClosing);
     1229                imageViewer("203 Close", base);
     1230
     1231                Mat kernelErode02 = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(10,2));
     1232                Imgproc.erode(base,base,kernelErode02);
     1233                imageViewer("204 Erode (Final)", base);
     1234
    11711235                //4. Classify like line clusters.
    11721236            }
Note: See TracChangeset for help on using the changeset viewer.