79514745

Date: 2025-03-17 13:42:11
Score: 3.5
Natty:
Report link

Here is my demo. It is NOT efficient and I am looking forward to better solutions.

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import cv2

myImage = cv2.imread(sys.argv[1])
(my_h, my_w, _) = myImage.shape
gray = cv2.cvtColor(myImage, cv2.COLOR_BGR2GRAY)
for h in range(my_h-3):
    for w in range(my_w-3):
        slice=gray[h:h+3, w:w+3]
        if (slice[0,0]==255 and slice[0,1]==255 and slice[0,2]==255 \
        and slice[1,0]==255 and slice[1,1]< 255 and slice[1,2]==255 \
        and slice[2,0]==255 and slice[2,1]==255 and slice[2,2]==255 ):
            myImage[h+1,w+1]=[255,255,255]
cv2.imwrite(sys.argv[1]+".denoise.png", myImage)

I tried imagemagick with no luck.

sample.png, sample.png.denoise.png, sample.Erode.png, sample.Dilate.png, sample.Open.png, sample.Close.png, sample.Smooth.png

From left to right:

#sample.png
python denoise.py sample.png #sample.png.denoise.png
magick sample.png -morphology Erode  Ring:1.5 sample.Erode.png
magick sample.png -morphology Dilate Ring:1.5 sample.Dilate.png
magick sample.png -morphology Open   Ring:1.5 sample.Open.png
magick sample.png -morphology Close  Ring:1.5 sample.Close.png
magick sample.png -morphology Smooth Ring:1.5 sample.Smooth.png
Reasons:
  • Blacklisted phrase (2): I am looking for
  • Blacklisted phrase (1): no luck
  • Probably link only (1):
  • Long answer (-1):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (0.5):
Posted by: Schezuk