¿Cómo eliminar el ruido de la imagen usando opencv - python?

Estoy trabajando con imágenes de la piel, en reconocimiento de las imperfecciones de la piel, y debido a la presencia de ruidos, principalmente por la presencia de pelos, este trabajo se vuelve más complicado.

Tengo un ejemplo de imagen en el que trabajo en un intento de resaltar solo la mancha de la piel, pero debido a la gran cantidad de pelos, el algoritmo no es efectivo. Con esto, me gustaría que me ayudaras a desarrollar un algoritmo para eliminar o reducir la cantidad de cabello para que solo pueda resaltar mi área de interés (ROI), que son las manchas.

Algoritmo utilizado para resaltar imperfecciones de la piel:

import numpy as np
import cv2

#Read the image and perform threshold
img = cv2.imread('IMD006.bmp')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.medianBlur(gray,5)
_,thresh = cv2.threshold(blur,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)

#Search for contours and select the biggest one
contours, hierarchy =         cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
cnt = max(contours, key=cv2.contourArea)

#Create a new mask for the result image
h, w = img.shape[:2]
mask = np.zeros((h, w), np.uint8)

#Draw the contour on the new mask and perform the bitwise operation
cv2.drawContours(mask, [cnt],-1, 255, -1)
res = cv2.bitwise_and(img, img, mask=mask)

#Display the result
cv2.imwrite('IMD006.png', res)
#cv2.imshow('img', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

Imagen de ejemplo utilizada:

¿Cómo lidiar con estos ruidos hasta el punto de mejorar mi región de interés?

Respuestas a la pregunta(1)

Su respuesta a la pregunta