<filename>algorithms/2 - Intensity Transformations/3 - Contrast Widening/cont.py
# Universidade Federal de Viçosa - Campus Rio Paranaíba
# Sistemas de Informação - Processamento Digital de Imagens
#
# Professor: <NAME>
# Autores:
#          - MatheusRV (3929)
#          - iguit0 (3902)
#          - ThiagoMunich (3628)
#
# Transformações de intensidade - Alargamento de contraste
# Como Executar:
#  $ python cont.py img_1.tif saida
#

import sys
import numpy as np
import matplotlib.pyplot as plt
from scipy import misc
from skimage import exposure

def loadImg(arg):
    return misc.imread(arg)

# Lê a imagem a partir de um arquivo
img_1 = loadImg(sys.argv[1])
saida = sys.argv[2]+'.tif'

# Define os limites do intervalo
v_min, v_max = np.percentile(img_1, (20, 80))

# Aplica a função para esticar os níveis de intensidade
img_saida = exposure.rescale_intensity(img_1, in_range = (v_min, v_max))

# Faz o salvamento da imagem de saída após o processamento
misc.imsave(saida, img_saida)

# Organiza o plote das imagens
plt.figure()
plt.subplot(221)
plt.imshow(img_1, cmap='gray', interpolation='nearest')
plt.title('img_entrada')
plt.subplot(222)
plt.imshow(img_saida, cmap='gray', interpolation='nearest')
plt.title('img_saida')

# Plota as imagens de entrada e saída na tela
plt.show()



'''
# Carrega uma imagem de baixo contraste a partir do módulo skimage.data.
im = data.moon()
# Converte o tipo de dados da imagem para float [0..1]
im = img_as_float(im)
# Imprime algumas informações sobre a imagem.
print(im.shape, im.min(), im.max(), im.mean(), im.std())

# Alargamento de contraste 1.
im_ac1 = exposure.rescale_intensity(im)
# Alargamento de contraste 2
im_ac2 = exposure.rescale_intensity(im, (0.2,0.6), (0.0,1.0))
# Equalização de histograma
im_eq = exposure.equalize_hist(im)

# Mostra as imagens na tela.
plt.figure()
plt.title('Processamento de histograma')
plt.axis('off')
plt.subplot(2,4,1)
plt.imshow(im,     cmap='gray')
plt.title('Imagem original')
plt.subplot(2,4,2)
plt.imshow(im_ac1, cmap='gray')
plt.title('Alarg. de constraste 1')
plt.subplot(2,4,3)
plt.imshow(im_ac2, cmap='gray')
plt.title('Alarg. de constraste 2')
plt.subplot(2,4,4)
plt.imshow(im_eq,  cmap='gray')
plt.title('Equalizacao de histograma')
plt.subplot(2,4,5)
plt.hist(im.flatten(),     256, range=(0, 1.), normed=True)
plt.title('Histograma')
plt.subplot(2,4,6)
plt.hist(im_ac1.flatten(), 256, range=(0, 1.), normed=True)
plt.title('Histograma')
plt.subplot(2,4,7)
plt.hist(im_ac2.flatten(), 256, range=(0, 1.), normed=True)
plt.title('Histograma')
plt.subplot(2,4,8)
plt.hist(im_eq.flatten(),  256, range=(0, 1.), normed=True)
plt.title('Histograma')
 
plt.show()
'''
<filename>algorithms/2 - Intensity Transformations/3 - Contrast Widening/cont.py
# Universidade Federal de Viçosa - Campus Rio Paranaíba
# Sistemas de Informação - Processamento Digital de Imagens
#
# Professor: <NAME>
# Autores:
#          - MatheusRV (3929)
#          - iguit0 (3902)
#          - ThiagoMunich (3628)
#
# Transformações de intensidade - Alargamento de contraste
# Como Executar:
#  $ python cont.py img_1.tif saida
#

import sys
import numpy as np
import matplotlib.pyplot as plt
from scipy import misc
from skimage import exposure

def loadImg(arg):
    return misc.imread(arg)

# Lê a imagem a partir de um arquivo
img_1 = loadImg(sys.argv[1])
saida = sys.argv[2]+'.tif'

# Define os limites do intervalo
v_min, v_max = np.percentile(img_1, (20, 80))

# Aplica a função para esticar os níveis de intensidade
img_saida = exposure.rescale_intensity(img_1, in_range = (v_min, v_max))

# Faz o salvamento da imagem de saída após o processamento
misc.imsave(saida, img_saida)

# Organiza o plote das imagens
plt.figure()
plt.subplot(221)
plt.imshow(img_1, cmap='gray', interpolation='nearest')
plt.title('img_entrada')
plt.subplot(222)
plt.imshow(img_saida, cmap='gray', interpolation='nearest')
plt.title('img_saida')

# Plota as imagens de entrada e saída na tela
plt.show()



'''
# Carrega uma imagem de baixo contraste a partir do módulo skimage.data.
im = data.moon()
# Converte o tipo de dados da imagem para float [0..1]
im = img_as_float(im)
# Imprime algumas informações sobre a imagem.
print(im.shape, im.min(), im.max(), im.mean(), im.std())

# Alargamento de contraste 1.
im_ac1 = exposure.rescale_intensity(im)
# Alargamento de contraste 2
im_ac2 = exposure.rescale_intensity(im, (0.2,0.6), (0.0,1.0))
# Equalização de histograma
im_eq = exposure.equalize_hist(im)

# Mostra as imagens na tela.
plt.figure()
plt.title('Processamento de histograma')
plt.axis('off')
plt.subplot(2,4,1)
plt.imshow(im,     cmap='gray')
plt.title('Imagem original')
plt.subplot(2,4,2)
plt.imshow(im_ac1, cmap='gray')
plt.title('Alarg. de constraste 1')
plt.subplot(2,4,3)
plt.imshow(im_ac2, cmap='gray')
plt.title('Alarg. de constraste 2')
plt.subplot(2,4,4)
plt.imshow(im_eq,  cmap='gray')
plt.title('Equalizacao de histograma')
plt.subplot(2,4,5)
plt.hist(im.flatten(),     256, range=(0, 1.), normed=True)
plt.title('Histograma')
plt.subplot(2,4,6)
plt.hist(im_ac1.flatten(), 256, range=(0, 1.), normed=True)
plt.title('Histograma')
plt.subplot(2,4,7)
plt.hist(im_ac2.flatten(), 256, range=(0, 1.), normed=True)
plt.title('Histograma')
plt.subplot(2,4,8)
plt.hist(im_eq.flatten(),  256, range=(0, 1.), normed=True)
plt.title('Histograma')
 
plt.show()
'''
# Universidade Federal de Viçosa - Campus Rio Paranaíba # Sistemas de Informação - Processamento Digital de Imagens # # Professor: <NAME> # Autores: #          - MatheusRV (3929) #          - iguit0 (3902) #          - ThiagoMunich (3628) # # Transformações de intensidade - Alargamento de contraste # Como Executar: #  $ python cont.py img_1.tif saida # # Lê a imagem a partir de um arquivo # Define os limites do intervalo # Aplica a função para esticar os níveis de intensidade # Faz o salvamento da imagem de saída após o processamento # Organiza o plote das imagens # Plota as imagens de entrada e saída na tela # Carrega uma imagem de baixo contraste a partir do módulo skimage.data. im = data.moon() # Converte o tipo de dados da imagem para float [0..1] im = img_as_float(im) # Imprime algumas informações sobre a imagem. print(im.shape, im.min(), im.max(), im.mean(), im.std())  # Alargamento de contraste 1. im_ac1 = exposure.rescale_intensity(im) # Alargamento de contraste 2 im_ac2 = exposure.rescale_intensity(im, (0.2,0.6), (0.0,1.0)) # Equalização de histograma im_eq = exposure.equalize_hist(im)  # Mostra as imagens na tela. plt.figure() plt.title('Processamento de histograma') plt.axis('off') plt.subplot(2,4,1) plt.imshow(im,     cmap='gray') plt.title('Imagem original') plt.subplot(2,4,2) plt.imshow(im_ac1, cmap='gray') plt.title('Alarg. de constraste 1') plt.subplot(2,4,3) plt.imshow(im_ac2, cmap='gray') plt.title('Alarg. de constraste 2') plt.subplot(2,4,4) plt.imshow(im_eq,  cmap='gray') plt.title('Equalizacao de histograma') plt.subplot(2,4,5) plt.hist(im.flatten(),     256, range=(0, 1.), normed=True) plt.title('Histograma') plt.subplot(2,4,6) plt.hist(im_ac1.flatten(), 256, range=(0, 1.), normed=True) plt.title('Histograma') plt.subplot(2,4,7) plt.hist(im_ac2.flatten(), 256, range=(0, 1.), normed=True) plt.title('Histograma') plt.subplot(2,4,8) plt.hist(im_eq.flatten(),  256, range=(0, 1.), normed=True) plt.title('Histograma')   plt.show()