JAVA - Removing noise of processed image OPENCV [closed]

asked 2018-08-28 20:40:07 -0600

brinx gravatar image

I have process an image for OCR, I encountered a problem where the processed image has too much noise. I am a beginner in this type of programming and Im just wondering if you guys can help me denoise it?

Here's the code I have so far

File newFile = new File(mFile);

orig = Imgcodecs.imread(newFile.getAbsolutePath(),Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat small = new Mat();
Imgproc.pyrDown(orig,small);
final Size kernelSize = new Size(3, 3);
final Point anchor = new Point(-1, -1);
final int iterations = 3;

Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_ELLIPSE, kernelSize);

Imgproc.GaussianBlur(small,small, new Size(3,3),0);
Imgproc.erode(small, small,kernel,anchor,iterations);
Imgproc.dilate(small,small,kernel);

Imgproc.adaptiveThreshold(small,small,255,Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,Imgproc.THRESH_BINARY,45,2);

Mat kernel2 = Imgproc.getGaussianKernel(6,2);

Imgproc.dilate(small,small,kernel2);
Imgproc.erode(small,small,kernel);

Bitmap bm = Bitmap.createBitmap(small.cols(), small.rows(),Bitmap.Config.ARGB_8888);
Utils.matToBitmap(small, bm);

Sample Output

image description

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by sturkmen
close date 2020-11-17 04:40:18.784305

Comments

Do you have to read ALL the text on the card? However I'll do something like crop only the card shape from the image and do some processing on it like thresholding, bgr2hsv or inRange. It all depends on the card color and text color

m93c gravatar imagem93c ( 2018-09-14 02:32:20 -0600 )edit