From e0ceb608b11d84935df7f1166ac595127bdd510b Mon Sep 17 00:00:00 2001 From: Helton Silva <105514135+heltonsilv@users.noreply.github.com> Date: Fri, 6 Sep 2024 21:31:13 -0400 Subject: [PATCH 1/3] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f984923c6..e4a4cabdf 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -# package_name +#image-processing-package + Description. The package package_name is used to: @@ -22,6 +23,6 @@ file1_name.my_function() ## Author My_name - +heltonsilv ## License -[MIT](https://choosealicense.com/licenses/mit/) \ No newline at end of file +[MIT](https://choosealicense.com/licenses/mit/) From f6cbada490b907e71df3c52788cf0b36d3e718e7 Mon Sep 17 00:00:00 2001 From: helt0nsilva <87678946+helt0nsilva@users.noreply.github.com> Date: Fri, 6 Sep 2024 22:29:57 -0400 Subject: [PATCH 2/3] Update --- image_processing/processing/combination.py | 18 +++++++- image_processing/processing/transformation.py | 10 +++- image_processing/utils/io.py | 13 ++++-- image_processing/utils/plot.py | 46 +++++++++++++++---- 4 files changed, 73 insertions(+), 14 deletions(-) diff --git a/image_processing/processing/combination.py b/image_processing/processing/combination.py index a75ecbd27..558439c63 100644 --- a/image_processing/processing/combination.py +++ b/image_processing/processing/combination.py @@ -3,15 +3,29 @@ from skimage.exposure import match_histograms from skimage.metrics import structural_similarity +# Função para encontrar a diferença entre duas imagens def find_difference(image1, image2): - assert image1.shape == image2.shape, "Specify 2 images with de same shape." + # Verifica se as duas imagens têm a mesma forma + assert image1.shape == image2.shape, "Specify 2 images with the same shape." + + # Converte as imagens para escala de cinza gray_image1 = rgb2gray(image1) gray_image2 = rgb2gray(image2) + + # Calcula a similaridade estrutural entre as duas imagens (score, difference_image) = structural_similarity(gray_image1, gray_image2, full=True) print("Similarity of the images:", score) - normalized_difference_image = (difference_image-np.min(difference_image))/(np.max(difference_image)-np.min(difference_image)) + + # Normaliza a imagem de diferença para o intervalo [0, 1] + normalized_difference_image = (difference_image - np.min(difference_image)) / (np.max(difference_image) - np.min(difference_image)) + + # Retorna a imagem de diferença normalizada return normalized_difference_image +# Função para transferir o histograma de uma imagem para outra def transfer_histogram(image1, image2): + # Ajusta o histograma da primeira imagem para combinar com o da segunda matched_image = match_histograms(image1, image2, multichannel=True) + + # Retorna a imagem com o histograma ajustado return matched_image \ No newline at end of file diff --git a/image_processing/processing/transformation.py b/image_processing/processing/transformation.py index a726ada29..1c06c8212 100644 --- a/image_processing/processing/transformation.py +++ b/image_processing/processing/transformation.py @@ -1,8 +1,16 @@ from skimage.transform import resize +# Função para redimensionar uma imagem com base em uma proporção def resize_image(image, proportion): + # Verifica se a proporção está entre 0 e 1 assert 0 <= proportion <= 1, "Specify a valid proportion between 0 and 1." + + # Calcula a nova altura e largura da imagem com base na proporção fornecida height = round(image.shape[0] * proportion) width = round(image.shape[1] * proportion) + + # Redimensiona a imagem usando a função resize do skimage, com anti-aliasing para melhorar a qualidade image_resized = resize(image, (height, width), anti_aliasing=True) - return image_resized \ No newline at end of file + + # Retorna a imagem redimensionada + return image_resized diff --git a/image_processing/utils/io.py b/image_processing/utils/io.py index 12d396ffc..430cb97b4 100644 --- a/image_processing/utils/io.py +++ b/image_processing/utils/io.py @@ -1,8 +1,15 @@ from skimage.io import imread, imsave -def read_image(path, is_gray = False): - image = imread(path, as_gray = is_gray) +# Função para ler uma imagem a partir de um caminho especificado +def read_image(path, is_gray=False): + # Lê a imagem do caminho fornecido + # Se is_gray for True, a imagem será convertida para escala de cinza + image = imread(path, as_gray=is_gray) + + # Retorna a imagem lida return image +# Função para salvar uma imagem em um caminho especificado def save_image(image, path): - imsave(path, image) \ No newline at end of file + # Salva a imagem no caminho fornecido + imsave(path, image) diff --git a/image_processing/utils/plot.py b/image_processing/utils/plot.py index a59c55696..f5102c101 100644 --- a/image_processing/utils/plot.py +++ b/image_processing/utils/plot.py @@ -1,28 +1,58 @@ import matplotlib.pyplot as plt +# Função para plotar uma imagem def plot_image(image): + # Cria uma figura com tamanho especificado plt.figure(figsize=(12, 4)) + + # Exibe a imagem em escala de cinza plt.imshow(image, cmap='gray') + + # Remove os eixos plt.axis('off') + + # Mostra a imagem plotada plt.show() +# Função para plotar múltiplas imagens lado a lado def plot_result(*args): + # Obtém o número de imagens a serem plotadas number_images = len(args) - fig, axis = plt.subplots(nrows=1, ncols = number_images, figsize=(12, 4)) + + # Cria uma figura com subplots em uma única linha + fig, axis = plt.subplots(nrows=1, ncols=number_images, figsize=(12, 4)) + + # Cria uma lista de nomes para as imagens names_lst = ['Image {}'.format(i) for i in range(1, number_images)] names_lst.append('Result') + + # Itera sobre os eixos, nomes e imagens para plotar cada uma for ax, name, image in zip(axis, names_lst, args): - ax.set_title(name) - ax.imshow(image, cmap='gray') - ax.axis('off') + ax.set_title(name) # Define o título do subplot + ax.imshow(image, cmap='gray') # Exibe a imagem em escala de cinza + ax.axis('off') # Remove os eixos + + # Ajusta o layout da figura para evitar sobreposição fig.tight_layout() + + # Mostra a figura plotada plt.show() +# Função para plotar histogramas de uma imagem def plot_histogram(image): - fig, axis = plt.subplots(nrows=1, ncols = 3, figsize=(12, 4), sharex=True, sharey=True) + # Cria uma figura com 3 subplots compartilhando eixos x e y + fig, axis = plt.subplots(nrows=1, ncols=3, figsize=(12, 4), sharex=True, sharey=True) + + # Lista de cores para os canais de cor color_lst = ['red', 'green', 'blue'] + + # Itera sobre os eixos, índices e cores para plotar cada histograma for index, (ax, color) in enumerate(zip(axis, color_lst)): - ax.set_title('{} histogram'.format(color.title())) - ax.hist(image[:, :, index].ravel(), bins = 256, color = color, alpha = 0.8) + ax.set_title('{} histogram'.format(color.title())) # Define o título do subplot + ax.hist(image[:, :, index].ravel(), bins=256, color=color, alpha=0.8) # Plota o histograma do canal de cor + + # Ajusta o layout da figura para evitar sobreposição fig.tight_layout() - plt.show() \ No newline at end of file + + # Mostra a figura plotada + plt.show() From 382325f49c43218daf3fce4fdde506dfbdba1465 Mon Sep 17 00:00:00 2001 From: Helton Silva <105514135+heltonsilv@users.noreply.github.com> Date: Fri, 6 Sep 2024 22:39:17 -0400 Subject: [PATCH 3/3] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e4a4cabdf..52d674b03 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,6 @@ file1_name.my_function() ``` ## Author -My_name heltonsilv ## License [MIT](https://choosealicense.com/licenses/mit/)