使用imagemagick高质量转换图像

I want to remove spots from the image shown below. I have tried using Imagemagick's convert function, but the black spots are not removed. I need a cleaner image with bold date showing.

Need to remove black dot(Please check using zoom)

In Imagemagick, you can remove the spots using connected components and optionally morphology. For example the following removes 2 pixel isolated spots or less. The morphology fills in some of the dark part of the text (it removes or opens the white background). But it may make some of the characters merge (touch):

Input:

enter image description here

convert spots.png \
-threshold 1% -type bilevel \
-define connected-components:area-threshold=2 \
-define connected-components:mean-color=true \
-connected-components 4 \
spots_clean.png

enter image description here

convert spots.png \
-threshold 1% -type bilevel \
-define connected-components:area-threshold=2 \
-define connected-components:mean-color=true \
-connected-components 4 \
-morphology open diamond:1 \
spots_clean_o1.png

enter image description here

convert spots.png \
-threshold 1% -type bilevel \
-define connected-components:area-threshold=2 \
-define connected-components:mean-color=true \
-connected-components 4 \
-morphology open octagon:1 \
spots_clean_o2.png

enter image description here

I think there is no "easy" way to do this. But :

  1. You can iterate over all pixels of the image and check this:

    • if the current pixel is black : check all neighbourg pixels.
    • if all neightbourg pixels are white, change current pixel to white.
  2. A better way, but longer way, is to use an OCR, to recognize the numbers and characters. Then rebuild the image with the characters found.