2016-04-19 2 views
3

В моем случае я хочу удалить все черные точки моего изображения. здесь мое изображение может быть представлено следующим образом. когда я работал с моей программой, изображение сглаживало, как бы программа не удаляла черные точки. пожалуйста, помогите мне удалить черные точки. ответьте мне скоро Original Image следующие коды.Как украсить изображение с помощью java opencv

public class Denoise { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     try{ 
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
     Mat source =Imgcodecs.imread("C:\\Users\\My Kindom\\Downloads\\printscreen.JPG",Imgcodecs.CV_LOAD_IMAGE_COLOR); 

     Mat destination = new Mat(source.rows(),source.cols(),source.type()); 
     destination = source; 
     Photo.fastNlMeansDenoisingColored(source,destination, 10, 10, 7, 21); 
     Imgcodecs.imwrite("C:\\Users\\My Kindom\\Downloads\\Denoise.jpg", destination); 

     }catch(Exception e){} 
     // TODO code application logic here 
    } 

Destination Image

ответ

2

Просто, вы можете применить порог для сегмента черные точки. Затем, используя это как маску, сделайте inpainting. Inpainting не влияет на другие области изображения как шумоподавление. Я не совсем уверен, что вы подразумеваете под черными точками, поэтому я применил простой порог. Вы можете попробовать с разными пороговыми значениями, используйте inRange или что угодно, чтобы создать маску. Я также использую произвольный радиус inpainting. Вы можете сделать это лучше, анализируя области контура в маске и затем определяя радиус.

оригинальный

original

маска и inpainted: порог = 70, радиус = 20

mask70dn70

маски и inpainted: порог = 100, радиус = 20

mask100dn100

import org.opencv.core.Core; 
import org.opencv.core.CvType; 
import org.opencv.core.Mat; 
import org.opencv.highgui.Highgui; 
import org.opencv.imgproc.Imgproc; 
import org.opencv.photo.Photo; 

public class Dnoise { 

    public static void doDnoise() 
    { 
     System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 

     Mat rgb = Highgui.imread("ybD8q.jpg"); 

     Mat gray = new Mat(rgb.size(), CvType.CV_8U); 
     Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_BGR2GRAY); 
     Mat mask = new Mat(rgb.size(), CvType.CV_8U); 
     Imgproc.threshold(gray, mask, 70, 255, Imgproc.THRESH_BINARY_INV); 
     Mat dn = new Mat(rgb.size(), CvType.CV_8UC3); 
     Photo.inpaint(rgb, mask, dn, 20, Photo.INPAINT_TELEA); 
    } 

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