procesamiento de imagenes

5
 Julián David Agudelo Blandón CC 1042769792 Informe de clase 10 Descripción: Mejora de brillo y contraste de una imagen RGB  ANTES DESPUES

Upload: julian-agudelo

Post on 04-Nov-2015

219 views

Category:

Documents


0 download

DESCRIPTION

Mejora de brillo y contraste

TRANSCRIPT

  • Julin David Agudelo Blandn

    CC 1042769792

    Informe de clase 10

    Descripcin: Mejora de brillo y contraste de una imagen RGB

    ANTES DESPUES

  • Procedimiento

    Como bien sabemos una imagen digital est conformada por 3 matrices que dan

    razn de tres colores, rojo, verde y azul (Red Green - Blue), la superposicin de

    estos logra los dems colores, en esta prctica se procedi a mejorar una imagen

    de estas caractersticas

    El mtodo que se utiliz se haba empleado anteriormente para mejorar una imagen

    en escala de grises, el concepto es exactamente igual pero varan algunas cosas

    en el proceso.

    Para mejorar la imagen bsicamente se hace una operacin pixel a pixel que

    consiste en multiplicarlo por un escalar A y luego sumarle un escalar B,

    correspondientes al contraste y al brillo respectivamente, el escalar A es hallado

    automticamente as, A=255/(vMax-vMin) siendo vMax y vMin los valores mximo

    y mnimo del plano de pixeles, el escalar B tambin es hallado automticamente,

    as, B=A*vMin, en este caso, en ambas imgenes se aument el contraste y se

    disminuy el brillo.

    Este proceso se repite para cada uno de los planos RGB, en sntesis, se hallarn 3

    valores de contraste y 3 valores de brillo diferentes, cada uno para cada color de la

    imagen, podemos verlo mejor a continuacin

  • RED GREEN BLUE vMaxr vMinr

    Ar=255/(vMaxr-vMinr) Br=Ar*vMinr pixelr*Ar+Br

    vMaxg vMing

    Ag=255/(vMaxg-vMing) Bg=Ag*vMing pixelg*Ag+Bg

    vMaxb vMinb

    Ab=255/(vMaxb-vMinb) Bb=Ab*vMinb pixelb*Ab+Bb

    Aunque se hayan optimizado procesos como el hallazgo de mximos y mnimos, la

    ejecucin del programa puede llevar una demora considerable si tenemos en cuenta

    que las operaciones a los pixeles se realizaran muchas veces, esto puede

    comprobarse si lo corremos sobre una imagen de gran resolucin.

  • Cdigo utilizado

    # -*- coding: cp1252 -*- """ Descripcion: Mejora de imagen RGB Autor: Julian Agudelo """ #librerias import numpy as np import cv2 import math #mensaje de salida al usuario print("Presione Q para salir") #carga de imagen img = cv2.imread("cl.jpg") #tamao de imagen alto,ancho,prof=img.shape #guardamos el plano azul de la imagen blue=img[0:ancho,0:alto,0] #guardamos el plano verde de la imagen green=img[0:ancho,0:alto,1] #guardamos el plano rojo de la imagen red=img[0:ancho,0:alto,2] #maximo y minimo del plano azul bmaximo=blue.max() bminimo=blue.min() #maximo y minimo del plano verde gmaximo=green.max() gminimo=green.min() #maximo y minimo del plano rojo rmaximo=red.max() rminimo=red.min() while(True): #recorremos la imagen #calculo de contraste de cada plano Ab=float(255/(bmaximo-bminimo)) Ag=float(255/(gmaximo-gminimo)) Ar=float(255/(rmaximo-rminimo)) #calculo de brillo de acda plano Bb=Ab*bminimo Bg=Ag*gminimo Br=Ar*rminimo for i in range(0,alto): for j in range(0,ancho): #obtenemos valor de pixeles de cada plano pixelb=img.item(i,j,0) pixelg=img.item(i,j,1)

  • pixelr=img.item(i,j,2) #multiplicamos contraste y sumamos brillo a cada pixel de cada plano img.itemset((i,j,0),(pixelb*Ab)-Bb) img.itemset((i,j,1),(pixelg*Ag)-Bg) img.itemset((i,j,2),(pixelr*Ar)-Br) #Alfinalizarelprocesomostramoselresultado cv2.imshow("Resultado",img) #Dejamoselprogramaesperandounaentradadeteclado ch=0xFF&cv2.waitKey() #SerevisasilapersonapresionaQ(Quit) if ch==ord('q'): #Almacenamosendiscolasalida cv2.imwrite("cl1.jpg",img) #salimosdelciclowhile break #Eliminamoslasventanasquecreamos cv2.destroyAllWindows()