Atividade 3 - SantiagoFerrer/computa-o-visual GitHub Wiki
Faça uma pesquisa sobre como é possível:
1- Realizar a limiarização de uma imagem usando Python e scikit-image.
A limiarização é uma técnica de processamento de imagem que consiste em converter uma imagem em escala de cinza em uma imagem binária (preto e branco) com base em um valor limite (threshold). Em Python, pode ser usada a biblioteca Scikit-image para realizar a limiarização de uma imagem. Código exemplo:
A imagem é carregada usando a função io.imread() e convertida em escala de cinza usando a função rgb2gray() da biblioteca Scikit-image. O valor de limiar é calculado usando o método de Otsu, que é implementado pela função threshold_otsu() da biblioteca Scikit-image. Finalmente, a limiarização é aplicada para obter uma imagem binária usando o operador > e a imagem binária resultante é salva usando a função io.imsave().
Referência: https://www.educative.io/answers/how-to-use-scikit-image-thresholding-methods-in-python http://wiki.icmc.usp.br/images/b/bb/Otsu_e_derivadas.pdf
2- Plotar o histograma de uma imagem tons de cinza usando Python, scikit-image e matplotlib.
Para plotar o histograma de uma imagem em tons de cinza usando Python, scikit-image e matplotlib, pode ser usada a função hist() da biblioteca matplotlib. Código de exemplo:
Neste exemplo, a imagem em tons de cinza é carregada usando a função io.imread() da biblioteca Scikit-image com o parâmetro as_gray=True. Em seguida, a função hist() da biblioteca matplotlib é usada para traçar o histograma da imagem, o parâmetro bins especifica o número de caixas do histograma e o parâmetro range especifica o intervalo dos valores do histograma. Por fim, a função plt.show() é usada para mostrar o histograma plotado na tela. As funções plt.xlabel() e plt.ylabel() são usadas para definir os rótulos dos eixos x e y do gráfico.
Referência: https://datacarpentry.org/image-processing/05-creating-histograms/
3- Plotar o histograma de uma imagem colorida (um histograma por canal de cor) usando Python, scikit-image e matplotlib.
Para plotar o histograma de uma imagem colorida usando Python, scikit-image e matplotlib, é preciso plotar um histograma para cada canal de cor (vermelho, verde e azul). Código exemplo:
A imagem é carregada usando a função io.imread() da biblioteca Scikit-image, a função plt.hist() da biblioteca matplotlib é usada para traçar o histograma de cada canal de cor, a função plt.subplot() é usada para criar um layout de subgráficos de 1x3 para exibir o histograma de cada canal de cor, a função plt.show() é usada para mostrar os histogramas plotados na tela e as funções plt.xlabel(), plt.ylabel() e plt.title() são usadas para definir os rótulos dos eixos x e y e o título de cada subgráfico.
Referência: https://datacarpentry.org/image-processing/05-creating-histograms/
4- Equalizar o histograma de uma imagem usando Python e scikit-image.
Para equalizar o histograma de uma imagem usando Python e scikit-image, é usada a função exposure.equalize_hist() da biblioteca scikit-image. Código exemplo:
A imagem em tons de cinza é carregada usando a função io.imread() da biblioteca Scikit-image com o parâmetro as_gray=True. Em seguida, a função exposure.equalize_hist() da biblioteca scikit-image é usada para equalizar o histograma da imagem. A imagem original e a imagem equalizada são plotadas usando a biblioteca matplotlib. As funções plt.subplots(), ax.ravel(), ax.imshow(), ax.set_title() e plt.tight_layout() são usadas para criar uma figura com duas subplots, exibir as imagens e definir os títulos de cada subplot.
Referência: https://stackoverflow.com/questions/47117179/histogram-equalization-skimage
5- Detectar (concluir) que uma foto está subexposta ou que está superexposta, analisando o histograma.
Ao analisar o histograma de uma imagem, é possível detectar se a imagem está subexposta ou superexposta.
Uma imagem subexposta é aquela em que a maioria dos pixels têm valores de intensidade de cor baixos, ou seja, a imagem parece escura. No histograma, isso é indicado por um pico no lado esquerdo do histograma, com a maior parte dos valores de pixel concentrados nas tonalidades escuras, próximos a 0.
Por outro lado, uma imagem superexposta é aquela em que a maioria dos pixels têm valores de intensidade de cor altos, ou seja, a imagem parece clara ou "queimada". No histograma, isso é indicado por um pico no lado direito do histograma, com a maior parte dos valores de pixel concentrados nas tonalidades claras, próximos a 255.
Referência: http://www.cursodefotografia-gratis.com/2012/08/modulo-intermediario-aula-13-o.html#.ZCGn53aZMkk
6- Detectar (concluir) se uma imagem está com baixo contraste ou alto contraste, analisando o histograma.
Em um histograma de uma imagem de baixo contraste, os valores de intensidade dos pixels são distribuídos de forma estreita, com pouca variação entre os valores. Em um histograma de uma imagem de alto contraste, os valores de intensidade dos pixels são distribuídos de forma mais ampla, com uma maior variação entre os valores.
Assim, analisando o histograma de uma imagem, é possível concluir se ela possui baixo ou alto contraste. Se o histograma apresentar um pico centralizado e pouco espalhado, a imagem provavelmente apresenta baixo contraste. Se, por outro lado, o histograma apresentar uma distribuição mais ampla e com dois ou mais picos distintos, a imagem provavelmente apresenta alto contraste.