Ich versuche, in Python als die gleiche Funktion implementieren zu diesem Beitrag: linkPython - Lokale Normalisierungs in OpenCV
Ich kann aber kein glattes Ergebnis erhalten, was auch immer ich versuche, obwohl ich beide Implementierung versuchte , das korrigierte der OP und die zweite Antwort zur Verfügung gestellt.
Ich vermisse wahrscheinlich etwas kleines, aber ich kann nicht herausfinden, was.
def local_norm(img, sigma_1, sigma_2):
float_gray = img * cv2.CV_32FC1/255.0
blur_1 = int(2 * np.ceil(- norm.ppf(0.05, loc=0, scale=sigma_1)) + 1)
blurred_1 = cv2.GaussianBlur(float_gray, (blur_1, blur_1), sigma_1, sigma_1)
temp_1 = float_gray - blurred_1
temp_2 = cv2.pow(temp_1, 2.0)
blur_2 = int(2 * np.ceil(- norm.ppf(0.05, loc=0, scale=sigma_2)) + 1)
blurred_2 = cv2.GaussianBlur(temp_2, (blur_2, blur_2), sigma_2, sigma_2)
temp_2 = cv2.pow(blurred_2, 0.5)
float_gray = temp_1/temp_2
res = cv2.normalize(float_gray, 0, 255, cv2.NORM_MINMAX)
res = res * cv2.CV_32S
return res
I muß ich Ende präzise, dass verwenden cv2.CV_32S
weil mit der Codierung des OP I mit einem schwarzen Bild enden. Für den Rest benutze ich das gleiche Sigma, 2.0 und 20.0.
ich jetzt das gute Ergebnis bekam , Vielen Dank ! –