2015-07-02 2 views
0

Я обрабатываю изображение, чтобы сделать его Tesseract-OCR дружественным с использованием платформы Catalano. Thresholding работает нормально, но когда я пытаюсь UnsharpMasking или изменение размера, я получаю сообщение об ошибке Не удалось исправить ориентацию: java.lang.IllegalStateException: Не удается вызвать setPixels() на переработанном растровом изображении, даже если я установил опции BitmapFactory, которые можно изменить в true & minsdk = 11.Android: Обработка изображений с использованием Catalano.Framework.1.4

  BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inSampleSize = 4; 
      options.inMutable = true; 

      Bitmap bitmap = BitmapFactory.decodeFile(ImagePath, options); 
      Bitmap bitmap = BitmapFactory.decodeFile(ImagePath, options); 
      FastBitmap fb = new FastBitmap(bitmap); 
      Grayscale grayScale = new Grayscale(); 
      grayScale.applyInPlace(fb); 


      switch (thresholdFilterName) { 
      case "Threshold": Threshold t = new Threshold(100); 
      t.applyInPlace(fb); 
      break; 

      case "BradleyLocalThreshold": BradleyLocalThreshold blt = new BradleyLocalThreshold(); 
      blt.applyInPlace(fb); 
      break; 

      case "SauvolaThreshold": SauvolaThreshold st =new SauvolaThreshold(); 
      st.applyInPlace(fb); 
      break; 

      case "NiblackThreshold": NiblackThreshold nt =new NiblackThreshold(); 
      nt.applyInPlace(fb); 
      break; 

      case "WolfJoulionThreshold": WolfJoulionThreshold wjt =new WolfJoulionThreshold(); 
      wjt.applyInPlace(fb); 
      break; 

      default: WolfJoulionThreshold wjtD =new WolfJoulionThreshold(); 
      wjtD.applyInPlace(fb); 
      break; 

      } 


      UnsharpMasking um= new UnsharpMasking(); 
      um.applyInPlace(fb); 
     // exception is thrown here. 

      Sharpen s = new Sharpen(); 
      s.applyInPlace(fb); 

      /*int newWidth=1191; 
      int newHeight=2000; 



    Resize rb = new Resize(newWidth, newHeight); 
      // and exception is thrown here also if i comment the above unsharpmasking. 

//    ResizeBicubic rb =new ResizeBicubic(newWidth, newHeight); 
//    ResizeBilinear rb = new ResizeBilinear(newWidth, newHeight); 
//    ResizeNearestNeighbor rb = new ResizeNearestNeighbor(newWidth, newHeight); 

      rb.applyInPlace(fb);*/ 


      bitmap = fb.toBitmap(); 
      processedImage.setImageBitmap(bitmap); 

Я прочитал для предварительной обработки изображений для OCR ImageMagick также довольно хорошо, но я не нашел ничего конкретного о том, как использовать его с целью распознавания текста в Android все, что я получил это инструмент командной строки. Также я дал https://github.com/paulasiimwe/Android-ImageMagick, но это также не помогло много

ответ

1

Похоже, вы нашли ошибку в коде Catalano Framework. Рассмотрите возможность подачи отчета об ошибке на project Issues page.

В Каталано фреймворка UnsharpMaskingclass в методе applyInPlace, recycle() вызывается на растровом изображении, в результате чего следующая операция, которую выполняют на этом растровое изображение, чтобы потерпеть неудачу.

Обходным решением было бы удалить blur.recycle()statement из кода Catalano Framework.

В качестве альтернативного решения проблемы, если у вас нет доступа к коду Каталанен Framework, потому что вы используете его в качестве JAR, вы могли бы подкласс UnsharpMasking класса самостоятельно в новом классе и переопределить метод applyInPlace для удаления recycle() заявление. Тогда вы обратились бы к подклассам версии от вашей альтернативной версии коды следующим образом:

//UnsharpMasking um = new UnsharpMasking(); 
MySafeUnsharpMasking um = new MySafeUnsharpMasking(); 
um.applyInPlace(fb); 
+0

BradleyLocalThreshold дает лучший результат в условиях освещения, где есть тень на изображении, но точность двигателя OCR беден с ним, где, как точность с HysteresisThreshold очень высока, но в условиях освещения она не работает. Есть ли какой-либо способ, который у нас есть лучший из обоих алгоритмов. – Sunny

+0

У меня нет ответа, но я бы посоветовал вам опубликовать это как новый вопрос StackOverflow вместе с некоторыми образцами. – rmtheis

Смежные вопросы