Exemplo n.º 1
0
def ej3_2(show_fft = True):
    img = cv.imread("../img/camaleon.tif", cv.IMREAD_GRAYSCALE)

    # Cantidad de filas y columnas de la imagen
    rows, cols = img.shape

    # Variables del filtro
    corte = 0.05

    # Creo el filtro Gauss en frecuencia
    filtro = fun.filterGaussian(rows, cols, corte)
    filtroPasaAlto = np.ones([rows, cols]) - filtro

    #Creo filtro de alta potencia
    a = 0.5
    b = 10

    filtroEAF = a + b * filtroPasaAlto

    # Filtro la imagen en freciencia
    imgFiltrada = fun.filterImg(img, filtroEAF)

    #TDF de la imagen original
    espectro = fun.spectrum(img)

    # TDF de la imagen filtrada
    espectroFiltrada = fun.spectrum(imgFiltrada)


    func.graficar(img, 255, 0, 'gray', 'Imagen Original')
    func.graficar(imgFiltrada, 255, 0, 'gray', 'Imagen Filtrada (Alta potencia frecuencial)')

    if show_fft:
        func.graficar(espectro, espectro.max(), 0, 'gray', 'TDF imagen original')
        func.graficar(espectroFiltrada, espectroFiltrada.max(), 0, 'gray', 'TDF Imagen Filtrada')
Exemplo n.º 2
0
def ej2_1():
    img = cv.imread("../img/huang1.jpg", cv.IMREAD_GRAYSCALE)

    rows, cols = img.shape

    # Filtros pasa altos: Para que funcionen, comentar los pasa bajos.
    # imgf1 = fun.filterImg(img, 1-fun.filterIdeal(rows,cols,0.08))
    # spec1 = fun.spectrum(fun.filterImg(img,fun.filterIdeal(rows,cols,0.15)))
    #
    # imgf2 = fun.filterImg(img, 1-fun.filterIdeal(rows,cols,0.15))
    # spec2 = fun.spectrum(fun.filterImg(img, fun.filterIdeal(rows,cols,0.15)))
    #
    # imgf3 = fun.filterImg(img, 1-fun.filterIdeal(rows,cols,0.6))
    # spec3 = fun.spectrum(fun.filterImg(img, fun.filterIdeal(rows,cols,0.6)))


    # Filtros pasa bajos
    imgf1 = fun.filterImg(img, fun.filterIdeal(rows,cols,0.08))
    spec1 = fun.spectrum(fun.filterImg(img,fun.filterIdeal(rows,cols,0.15)))

    imgf2 = fun.filterImg(img, fun.filterIdeal(rows,cols,0.15))
    spec2 = fun.spectrum(fun.filterImg(img, fun.filterIdeal(rows,cols,0.15)))

    imgf3 = fun.filterImg(img, fun.filterIdeal(rows,cols,0.6))
    spec3 = fun.spectrum(fun.filterImg(img, fun.filterIdeal(rows,cols,0.6)))


    func.graficar(imgf1, imgf1.max(), 0, 'gray', 'Imagen para 0.1')
    func.graficar(spec1, (spec1).max(), 0, 'gray', 'Espectro para 0.08')

    func.graficar(imgf2, imgf2.max(), 0, 'gray', 'Imagen para 0.15')
    func.graficar(spec2, (spec2).max(), 0, 'gray', 'Espectro para 0.15')

    func.graficar(imgf3, imgf3.max(), 0, 'gray', 'Imagen para 0.6')
    func.graficar(spec3, (spec3).max(), 0, 'gray', 'Espectro para 6')
Exemplo n.º 3
0
def ej4_3_rechazabanda():
    img = cv.imread("../img/img_degradada.tif", cv.IMREAD_GRAYSCALE)
    rows, cols = img.shape

    # Espectro de la imagen
    # Shiftear en false para poder determinar el punto del espectro a anular
    img_fft = fun.spectrum(img, shiftear=False)

    # Parametros de los filtros Butterworth (dentro del pasabanda)
    cortes = [.04, .043]
    orden = 100

    # Obtengo el filtro y filtro la imagen
    filtro = fun.filtroRechazaBanda(rows, cols, cortes, orden)
    img_fil = fun.filterImg(img, filtro)

    # Calcular el espectro para graficarlo
    img_fil_s = fun.spectrum(img_fil, shiftear=False)

    # Graficar
    func.graficar(img, 255, 0, 'gray', 'Imagen original')
    func.graficar(img_fft, 1, 0, 'gray', 'Espectro de la imagen original')
    func.graficar(filtro, 1, 0, 'gray', 'Filtro notch')
    func.graficar(img_fil, 255, 0, 'gray', 'Imagen filtrada')
    func.graficar(img_fil_s, 1, 0, 'gray', 'Espectro de la imagen filtrada')
Exemplo n.º 4
0
def ej3_1():
    img = cv.imread("../img/huang1.jpg", cv.IMREAD_GRAYSCALE)

    # Cantidad de filas y columnas de la imagen
    rows, cols = img.shape

    # Variables del filtro
    corte = .05

    # Creo el filtro Gauss en frecuencia
    filtro = fun.filterGaussian(rows, cols, corte)
    filtroPasaAlto = 1 - filtro

    a = 1.1
    A = a * np.ones([rows, cols])
    Hap = (A - 1) + filtroPasaAlto

    # Filtro la imagen en freciencia
    imgFiltrada = fun.filterImg(img, Hap)

    # Calculo el espectro de la imagen filtrada
    espectro = fun.spectrum(imgFiltrada)

    # Grafico
    func.graficar(img, img.max(), 0, 'gray', 'Imagen Original')
    func.graficar(filtroPasaAlto, filtroPasaAlto.max(), 0, 'gray', 'Filtro pasa alto')
    func.graficar(imgFiltrada, imgFiltrada.max(), 0, 'gray', 'Imagen filtrada (filtro de alta frecuencia)')
    func.graficar(espectro, espectro.max(), 0, 'gray', 'Espectro')
Exemplo n.º 5
0
def ej2_4():
    img = cv.imread("../img/huang1.jpg", cv.IMREAD_GRAYSCALE)

    # Cantidad de filas y columnas de la imagen
    rows, cols = img.shape

    # Variables del filtro
    corte = 0.010

    # Creo el filtro Gauss en frecuencia
    filtro = fun.filterGaussian(rows, cols, corte)

    # Filtro pasa altos
    # filtro = 1- filtro

    func.graficar(filtro, filtro.max(), 0, 'gray', 'Filtro')

    # Filtro la imagen en freciencia
    imgFiltrada = fun.filterImg(img, filtro)

    # Calculo el espectro de la imagen filtrada
    espectro = fun.spectrum(imgFiltrada)

    # Grafico
    func.graficar(img, img.max(), 0, 'gray', 'Imagen Original')
    func.graficar(imgFiltrada, imgFiltrada.max(), 0, 'gray', 'Imagen filtrada')
    func.graficar(espectro, espectro.max(), 0, 'gray', 'Espectro')
Exemplo n.º 6
0
def ej2_2():
    img = cv.imread("../img/huang1.jpg", cv.IMREAD_GRAYSCALE)

    #Cantidad de filas y columnas de la imagen
    rows, cols = img.shape

    #Variables del filtro
    corte = 0.02
    order = 5

    #Creo el filtro Butterworth pasa bajos en frecuencia
    filtro = fun.filterButterworth(rows, cols, corte, order)

    # Lo convierto a pasa altos
    # filtro = 1 - filtro

    func.graficar(filtro, filtro.max(), 0, 'gray', 'Filtro')

    #Filtro la imagen en freciencia
    imgFiltrada = fun.filterImg(img, filtro)

    #Calculo el espectro de la imagen filtrada
    espectro = fun.spectrum(imgFiltrada)

    #Grafico
    func.graficar(img, img.max(), 0, 'gray', 'Imagen Original')
    func.graficar(imgFiltrada, imgFiltrada.max(), 0, 'gray', 'Imagen filtrada Corte: 0.02. Orden: 5.')
    func.graficar(espectro, espectro.max(), 0, 'gray', 'Espectro')
Exemplo n.º 7
0
def ej4_7():
    img = cv.imread("../img/HeadCT_degradada.tif", cv.IMREAD_GRAYSCALE)
    img_fft = fun.spectrum(img)
    img_fft = np.fft.ifftshift(img_fft)

    # Cantidad de filas y columnas de la imagen
    rows, cols = img.shape

    # En este caso el filtro se construye a mano, y se anulan los puntos blancos
    # del espectro que no tienen nada que ver con su entorno
    filtro = np.ones((rows, cols))
    filtro[40, 40] = 0
    filtro[20, 0] = 0
    filtro[0, 10] = 0
    filtro[492, 0] = 0

    mascara = filtro * img_fft

    # Aplico el filtro
    filtrada = fun.filterImg(img, filtro)

    # Graficar
    func.graficar(img, 255, 0, 'gray', 'Imagen original')
    func.graficar(img_fft, 1, 0, 'gray', 'Espectro')
    func.graficar(filtrada, 255, 0, 'gray', 'filtrada')
    func.graficar(mascara, 1, 0, 'gray', 'mascara')
Exemplo n.º 8
0
def ej5():
    img = cv.imread("../img/huang3_movida.tif", cv.IMREAD_GRAYSCALE)
    rows, cols = img.shape
    img_fft = fun.spectrum(img)
    img_fft = np.fft.ifftshift(img_fft)

    func.graficar(img, 255, 0, 'gray', 'imagen original')
    func.graficar(img_fft, 1, 0, 'gray', 'Espectro')
Exemplo n.º 9
0
def ej1_4():
    img1 = cv.imread("../img/imagenB.tif", cv.IMREAD_GRAYSCALE)
    img2 = cv.imread("../img/cameraman.tif", cv.IMREAD_GRAYSCALE)
    img3 = cv.imread("../img/hubble.tif", cv.IMREAD_GRAYSCALE)
    img4 = cv.imread("../img/chairs.jpg", cv.IMREAD_GRAYSCALE)

    sp1 = fun.spectrum(img1)
    sp2 = fun.spectrum(img2)
    sp3 = fun.spectrum(img3)
    sp4 = fun.spectrum(img4)

    func.graficar(img1, img1.max(), 0, 'gray', 'Original: imagenB.tif')
    func.graficar(sp1, sp1.max(), 0, 'gray', 'FFT: imagenB.tif')
    func.graficar(img2, img2.max(), 0, 'gray', 'Original: cameraman.tif')
    func.graficar(sp2, sp2.max(), 0, 'gray', 'FFT: cameraman.tif')
    func.graficar(img3, img3.max(), 0, 'gray', 'Original: hubble.tif')
    func.graficar(sp3, sp3.max(), 0, 'gray', 'FFT: hubble.tif')
    func.graficar(img4, img4.max(), 0, 'gray', 'Original: chairs.jpg')
    func.graficar(sp4, sp4.max(), 0, 'gray', 'FFT: chairs.jpg')
Exemplo n.º 10
0
def ej1_3():
    cols = 512
    rows = 512
    linea_horizontal = np.zeros([512, 512], dtype=np.uint8)
    linea_horizontal[256, 0:512] = 255

    M = cv.getRotationMatrix2D((cols / 2, rows / 2), 20, 1)
    linea_horizontal_r = cv.warpAffine(linea_horizontal, M, (cols, rows))

    lh_rec = linea_horizontal[128:382,128:382]
    lh_rec_r = linea_horizontal_r[128:382,128:382]
    func.graficar(lh_rec, 255, 0, 'gray', 'Linea Horizontal Recortada')
    func.graficar(lh_rec_r, 255, 0, 'gray', 'Linea Horizontal Recortada Rotada')


    lh_fft = fun.spectrum(lh_rec)
    lh_r_fft = fun.spectrum(lh_rec_r)
    func.graficar(lh_fft, lh_fft.max(), 0, 'gray', 'Linea Horizontal Transformada')
    func.graficar(lh_r_fft, lh_r_fft.max(), 0, 'gray', 'Linea Horizontal Transformada')
Exemplo n.º 11
0
def ej4_4():
    img = cv.imread("../img/img_degradada.tif", cv.IMREAD_GRAYSCALE)
    rows, cols = img.shape

    # Espectro de la imagen
    # Shiftear en false para poder determinar el punto del espectro a anular
    img_fft = fun.spectrum(img, shiftear=False)

    # Elegir puntos a filtrar con clic
    punto1 = func.elegir_punto(img_fft)

    fNotch1 = fun.filtroNotch(rows, cols, punto1, pixel=True)

    img_fil = fun.filterImg(img, fNotch1)

    # Calcular el espectro para graficarlo
    img_fil_s = fun.spectrum(img_fil, shiftear=False)

    # Graficar
    func.graficar(img, 255, 0, 'gray', 'Imagen original')
    func.graficar(img_fft, 1, 0, 'gray', 'Espectro de la imagen original')
    func.graficar(img_fil, 255, 0, 'gray', 'Imagen filtrada')
    func.graficar(img_fil_s, 1, 0, 'gray', 'Espectro de la imagen filtrada')
Exemplo n.º 12
0
def ej1_1y1_2():
    linea_vertical = np.zeros([512,512],dtype=np.uint8)
    linea_vertical[0:512,256] = 255

    linea_horizontal = np.zeros([512,512],dtype=np.uint8)
    linea_horizontal[256, 0:512] = 255

    circulo = np.zeros([512,512],dtype=np.uint8)
    cv.circle(circulo, (256,256), 50, 255, -1)
    cv.circle(circulo, (256,256), 49, 0, -1)

    rectangulo = np.zeros([512,512],dtype=np.uint8)
    cv.rectangle(rectangulo, (156,206), (356, 306), 255,3)

    rectanguloC = np.zeros([512, 512], dtype=np.uint8)
    cv.rectangle(rectanguloC, (100, 206), (300, 306), 255, 3)

    cuadrado = np.zeros([512,512],dtype=np.uint8)
    cv.rectangle(cuadrado, (206,206), (306, 306), 255,3)

    lv_fft = fun.spectrum(linea_vertical)
    lh_fft = fun.spectrum(linea_horizontal)
    cr_fft = fun.spectrum(circulo)
    rc_fft = fun.spectrum(rectangulo)
    rc_fft2 = fun.spectrum(rectanguloC)
    cd_fft = fun.spectrum(cuadrado)

    func.graficar(linea_vertical, 255, 0, 'gray', 'Linea Vertical')
    func.graficar(lv_fft, lv_fft.max(), 0, 'gray', 'Linea Vertical Transformada')

    func.graficar(linea_horizontal, 255, 0, 'gray', 'Linea Horizontal')
    func.graficar(lh_fft, lh_fft.max(), 0, 'gray', 'Linea Horizontal Transformada')

    func.graficar(circulo, 255, 0, 'gray', 'Circulo')
    func.graficar(cr_fft, cr_fft.max(), 0, 'gray', 'Circulo Transformada')

    func.graficar(rectangulo, 255, 0, 'gray', 'Rectangulo')
    func.graficar(rc_fft, rc_fft.max(), 0, 'gray', 'Rectangulo Transformada')

    func.graficar(rectanguloC, 255, 0, 'gray', 'Rectangulo corrido')
    func.graficar(rc_fft2, rc_fft2.max(), 0, 'gray', 'Rectangulo Transformada Corrida')

    func.graficar(cuadrado, 255, 0, 'gray', 'Cuadrado')
    func.graficar(cd_fft, cd_fft.max(), 0, 'gray', 'Cuadrado Transformada')