Example #1
0
import cv2read as cread
import matplotlib.pyplot as plt
import numpy as np

def avg_stdabw(array):			# berechnet die Standartabweichung des Bildes
    avg = np.mean(array)    		# Durchschnittswert des Bildes bestimmen
    std = 0
    for y in range(0,array.shape[0]):
        for x in range(0,array.shape[1]): # Standartabweichung bei jedem Pixel berechnen
            std = std + ((array[y][x] - avg) ** 2) / (array.size -1) # quadratischer Fehler
    std = np.sqrt(std)			# da std mit ² berechnet wurde, benötigt man jetzt noch die Wurzel
    return avg, std			# gibt durchschnittswert und Standartabweichung zurück
    
    
def subimg(img):			# Teilt das Graustufenbild in die einzelnen Graustufen auf
					# mindestens 10 pixel differenz zwischen den werten,
					# da die übergänge nicht exakt gerade sind
    return npframe[:,0:110],npframe[:,120:260],npframe[:,280:410],npframe[:,420:560],npframe[0:460,570:640]
    
frame = cread.bildoeffnen("../Bilder/graustufen_korrigiert.png")
npframe = np.array(frame, dtype=np.uint8)
subimgs = [] 				# korrigiertes Graustufenbild einlesen und aufspalten
subimgs = subimg(npframe)

for img in subimgs:			# Mittelwert und Standartabweichung des Bildes ausgeben
    avg, std = avg_stdabw(img)
    print(str(avg) + " & " + str(std))
Example #2
0
def getimgmean(filename):  # berechnet das durchschnittsbild
    avg = np.zeros((480, 640), dtype=np.double)  # zu beginn ein Schwarzes Bild
    for i in range(1, 11):  # alle 10 aufgenommenen Bilder mit gewichtung 1/10
        # zu einem durchschnitts Bild zusammen addieren.
        avg = avg + cread.bildoeffnen("../Bilder/" + filename + str(i) + ".png") / 10
    return avg
Example #3
0
import numpy as np
import dunkelbild as dk
import cv2read as cvread
import matplotlib.pyplot as plt
import cv2

darkimg = dk.getimgmean("dunkelbild_")  # Dunkelbild durchschnitt
whiteimg = dk.getimgmean("weissbild_")  # Weissbild durchschnitt
wimg_cmp = whiteimg - darkimg           # Weissbild ohne thermisches Rauschen
whiteNorm = wimg_cmp / np.mean(wimg_cmp)# Weissbild Normiert

#-------Bild zur korrektur einlesen
img2 = np.array(cvread.bildoeffnen("../Bilder/graustufen.png")) # original Bild
img = (img2 - darkimg) 			# PixelOffset abziehen
for x in range(0,img.shape[1]):
    for y in range(0,img.shape[0]):
        if not whiteNorm[y][x] == 0:	# keine Division durch 0 zulassen
	    # Pixelweise durch Weissbild teilen, Sensitivität anpassen
            img[y][x] = img[y][x] / whiteNorm[y][x]

cv2.imwrite("../Bilder/graustufen_korrigiert.png", img) # korrigiertes Bild