Skip to content

Instantly share code, notes, and snippets.

@AvasDream
Last active November 23, 2019 09:05
Show Gist options
  • Save AvasDream/143b7c40234ad9a6189bc0cbabdf15a1 to your computer and use it in GitHub Desktop.
Save AvasDream/143b7c40234ad9a6189bc0cbabdf15a1 to your computer and use it in GitHub Desktop.
python scripts for

Analyse Camera Data

Camera

cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 400)
cap.set(10, 160)
cap.set(11, 30)
cap.set(12, 30)
cap.set(15, -4)
cap.set(14, 20)
cap.set(17, 5000)
print("framewidth:    " + str(cap.get(3)))
print("frameheight:   " + str(cap.get(4)))
print("--------------------------------")
print("brightness:    " + str(cap.get(10)))
print("contrast:    " + str(cap.get(11)))
print("saturation:    " + str(cap.get(12)))
print("--------------------------------")
print("exposure:" + str(cap.get(15)))
print("gain:" + str(cap.get(14)))
print("whitebalance:" + str(cap.get(17)))

while(True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow("frame", gray)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break;
#for i in range(1,11)


for i in range(1,11):
    ret, frame = cap.read()
    cv2.imwrite("weiss_"+ str(i) +".png" , frame)

cap.release()
cv2.destroyAllWindows()

Versuche

#! python
import numpy as np
from scipy import misc
import os
import cv2
import matplotlib.pyplot as plt
from PIL import Image

PATH = "Enter PATH to images here"

maxIntensity = 255.0
x = np.arange(maxIntensity)
phi = 1
theta = 1


def readImages(imgType):
    imgList = []
    for i in range(1,10):
        x = imgType
        x += "_" + str(i) + ".png"
        f = cv2.imread(os.path.join(PATH,x), cv2.IMREAD_GRAYSCALE)
        imgList.append(f)
    return imgList

def showImage(img):
    plt.imshow(img)
    plt.show()

def saveImage(img,name):
    misc.imsave(name, img) 

def cutImage(img):
    img_list = []
    # 80 
    img_list.append(img[:,10:90,])
    # 120
    img_list.append(img[:,110:230,])
    # 130
    img_list.append(img[:,250:380,])
    # 130
    img_list.append(img[:,400:530,])
    # 90
    img_list.append(img[:,540:630,])
    # Height = 400 Width = 550
    return img_list

def part1():
    greyPic = os.path.join(PATH, "grau2.png")
    img = misc.imread(greyPic)
    imgParts = cutImage(img)
    # Calculation
    print("Versuch 1")
    for i,img in enumerate(imgParts):
        avg = np.round(np.average(img), 3)
        stdDev = np.round(np.std(img), 3)
        print("****************************")
        print("Average: ", str(avg))
        print("Deviation: ", str(stdDev))
        imgName = "gray_" + str(i) + ".png"
        misc.imsave(imgName, img) 
        #showImage(img)
    
    
    
def part2():
    imgs = []
    for i in range(1,10):
        path = os.path.join(PATH, "schwarz_" + str(i) + ".png")
        img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
        # Convert to double
        imgs.append(np.double(img))
    # Create Average image with all zeros in it and sets type to double/float
    meanDark = np.zeros((360,640), dtype=float)
    for x in range(meanDark.shape[0]):
        for y in range(meanDark.shape[1]):
            sum = 0
            for i in imgs:
                sum += i[x,y]
            meanDark[x,y] = sum / len(imgs)
    saveImage(meanDark, "mean_dark.png")

def part3():
    # grauwertkeil
    greyPic = os.path.join(PATH, "grau2.png")
    img_grauwerkeil = misc.imread(greyPic)
    img_meanDark = part2()
    imgs = []
    for i in range(1,11):
        path = os.path.join(PATH, "weiss_" + str(i) + ".png")
        img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
        # Convert to double
        if img is not None:
            imgs.append(np.double(img))
        else:
            print("corrupted image: ", path)
    meanWhite = np.zeros((360,640), dtype=float)
    for x in range(meanWhite.shape[0]):
        for y in range(meanWhite.shape[1]):
            sum = 0
            for i in imgs:
                sum += i[x,y]
            meanWhite[x,y] = sum / len(imgs)
    saveImage(meanWhite, "mean_white.png")
    # icrease contrast
    contrast_white = meanWhite * (maxIntensity/meanWhite.max())
    saveImage(meanWhite, "contrast_white.png")
    # normation to 1 
    mean = np.mean(meanWhite)
    for x in range(meanWhite.shape[0]):
        for y in range(meanWhite.shape[1]):
            meanWhite[x,y] = np.double(meanWhite[x,y] / mean)
    #corrected = ( img_grauwerkeil - img_meanDark) / meanWhite
    #saveImage(corrected, "corrected_grauwertkeil.png")    
    

def main():
    #part1()
    part2()

if __name__ == "__main__":
    main()

Fragenkatalog zu Testat 3

  1. Wie verändert sich das Spektrums einer Rechteckschwingung mit fester Impulsdauer, bei der die Periode immer weiter erhöht wird?

    • Wird die Periodendauer größer, so wird der Abstand der Linion im Spektrum immer enger.
    • Geht die Periodendauer gegen unendlich, verschmelzen die einzelnen Linien zu einem durchgehenden Spektrum.
  2. Was ist ein fastperiodisches Signal?

    • Zeitlich begrenztes periodisches Signal, sie besitzten linienähnliche Spektren.
  3. Sie beobachten ein Spektrum aus mehreren Linien bei 100 Hz, 200 Hz, 270 Hz, 400 Hz und 800 Hz. Um was für einen Signaltyp handelt es sich?

    • Um ein quasiperiodisches Signal.
  4. Welche Signale lassen sich als Fourierreihe darstellen?

    • Alle praktisch vorkommenden periodischen Signale.
  5. Wie sieht das Spektrum eines einzelnen Rechteckimpulses aus?

    • Das Spektrum besteht aus Linien mit Amplituden, die durch eine Sinc-Funktion beschrieben werden, d.h. sinc x = (sin x) / x.
  6. Wie sieht die Fouriertransformierte des mit 2 skalierten Einheitsimpulses aus?

    • 1*2 = 2
  7. Wie kann man am Besten die wechselnde Tonhöhe in der Aufnahme eines Solo-Musikstückes bestimmen?

    • Durch Zerlegung des Signals in überlappende Abschnitte, in denen man eine lokale Fourieranalyse durchführt, nachdem man die Abschnitte mit einer möglichst glatten Fensterfunktion multipliziert hat.
  8. Sie zerlegen ein relativ glattes, periodisches Signal in mehrere Abschnitte und bestimmen in jedem Abschnitt die lokale Fouriertransformation. Wie unterscheiden sich die lokalen Spektra vom Gesamtspektrum und warum?

    • Die lokalen Spektra enthalten deutlich höhere Frequenzen, da durch das Ausschneiden plötzliche Übergängen entstehen, die wiederum hohe Frequenzanteile haben.
  9. Was bedeutet die Komplementarität von Frequenz und Zeit?

    • Je eingeschränkter das Frequenzband eines Signals ist, desto größer muss zwangsläufig die Zeitdauer des Signals sein
  10. Wie berechnet man die Frequenzunschärfe eines Signals?

    • delta t * delta f
  11. Was besagt die Frequenz-Zeit-Unschärferelation?

    • Man kann niemals die Zeitdauer und Frequenz eines Signals genauer als σ_t · σ_ω = 1 angeben.
  12. Bei welchem Signal ist das Produkt aus Zeit- und Frequenzunschärfe genau gleich 1?

    • Bei Gabor-Wavelets
  13. Was ist der Unterschied zwischen der Fourierreihe und dem Spektrum eines periodischen Signals?

    • Fourierreihe und Spektrum sind bei periodischen Signalen dasselbe.
  14. Was ist die Ausblendeigenschaft des Dirac-Impulses?

    • Ein Dirac-Impuls blendet alle Werte eines Signals f(t) aus, d.h. er setzt alle auf 0, mit Ausnahme des Wertes f(t) an t.
  15. Bei dem Spektrum eines Signals ist der Realteil gerade und der Imaginärteil ungerade. Um was für einen Signaltyp handelt es sich?

    • Um ein reelles Signal.
  16. Die Fouriertransformierte von f_1(t) sei F_1(ω), die Fouriertransformierte von f_2(t) sei F_2(ω). Wie sieht die Fouriertransformierte von f(t) = 3 f_1(t) - 0.7 f_2(t) aus, und welche Eigenschaft macht man sich dabei zunutze?

    • a. 3 F_1 (ω) - 0.7 F_2 (ω) (Linearitätseigenschaft)
  17. Was passiert mit dem Spektrum eines Signals, wenn man es in zeitlicher Richtung verschiebt?

    • Das Spektrum wird ebenfalls mit dem gleichen Faktor multipliziert.
  18. Wie sieht das Spektrum eines Signals aus, das um den Faktor 2 im Zeitbereich gestreckt wird?

    • Um dem Faktor 2 gestaucht.
  19. Was passiert mit dem Spektrum eines Signals, wenn man es mit einem konstanten Phasenfaktor mit dem Phasenwinkel a multipliziert?

    • ??? 1/a F(w/a)
  20. Was ist das Gibbs-Phänomen?

    • Obwohl endliche Fourierreihen gegen eine unstetige Funktion konvergieren, verringert sich der maximale Abstand zwischen endlicher Fourierreihe und der Zielfunktion nicht.

Bonus

  1. Welche Fläche hat ein Dirac-Impuls?

    • 1
  2. Welche Bedingungen muß ein aperiodisches Signal NICHT erfüllen, damit sein Fouriertransformierte existiert?

    • Es darf innerhalb jeden endlichen Intervalls nur endlich viele Extrema haben.
  3. Sie beobachten ein Spektrum, das aus mehreren, unscharfen Linien an den Frequenzen 440 Hz, 880 Hz und 4400 Hz besteht. Um was für einen Signaltyp handelt es sich?

    • Um ein fastperiodisches Signal. (da die Zwischenschritte von 880 zu 4400 fehlen)
  4. Das Spektrum eines Signals besteht aus einzelnen scharfen Dirac-Impulsen bei 1000 Hz, 4000 Hz, 5000 Hz und 9000 Hz. Um was für eine Art Signal handelt es sich?

    • um ein peridoisches Signal
  5. Bei welchem der unten aufgelisteten Signale kann man die Frequenz am genauesten messen?

    • Bei einem Burst-Signal mit einer Mittelfrequenz von 440 Hz und einer Dauer von 500 ms.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment