Maison >développement back-end >Tutoriel Python >Comment faire correspondre les couleurs des images à l'aide de Python

Comment faire correspondre les couleurs des images à l'aide de Python

WBOY
WBOYoriginal
2023-08-25 23:07:471752parcourir

Comment faire correspondre les couleurs des images à laide de Python

Comment utiliser Python pour faire correspondre les couleurs des images

1. Introduction

Dans les domaines du traitement d'images et de la vision par ordinateur, la correspondance des couleurs est une tâche courante. La correspondance des couleurs peut être utilisée dans diverses applications, telles que la restauration d'images, la synthèse d'images, la classification d'images, etc. Cet article explique comment utiliser Python pour faire correspondre les couleurs des images et fournit un exemple de code correspondant.

2. Préparation

Avant de commencer, nous devons préparer l'environnement de travail nécessaire. Tout d’abord, vous devez installer Python et les bibliothèques associées.

  1. Installer Python

Python est un langage de programmation de haut niveau, et la version appropriée peut être téléchargée et installée sur le site officiel https://www.python.org/.

  1. Installer les bibliothèques pertinentes

Pour le traitement des images, nous devons utiliser les bibliothèques OpenCV et NumPy. Vous pouvez utiliser la commande pip pour installer ces deux bibliothèques :

pip install opencv-python
pip install numpy

3. Conversion de l'espace colorimétrique

Avant la correspondance des couleurs, nous devons d'abord convertir l'image de l'espace colorimétrique RVB vers d'autres espaces colorimétriques. L’espace colorimétrique RVB est l’une des méthodes de représentation des couleurs les plus courantes, mais ce n’est pas la plus adaptée à la correspondance des couleurs. Les espaces colorimétriques de correspondance des couleurs couramment utilisés incluent l’espace colorimétrique Lab et l’espace colorimétrique HSV.

  1. Conversion de l'espace colorimétrique de laboratoire

L'espace colorimétrique de laboratoire est basé sur la perception de la couleur par l'œil humain. Il divise les couleurs en luminosité (L) et en deux canaux de couleur (a et b). En convertissant une image RVB en espace colorimétrique Lab, nous pouvons mieux décrire les caractéristiques de couleur de l'image.

L'exemple de code est le suivant :

import cv2

def rgb2lab(image):
    lab_image = cv2.cvtColor(image, cv2.COLOR_RGB2Lab)
    return lab_image
  1. Conversion de l'espace colorimétrique HSV

L'espace colorimétrique HSV est utilisé pour décrire la teinte (H), la saturation (S) et la luminosité (V) de la couleur. L'espace colorimétrique HSV est plus adapté à la représentation des caractéristiques de couleur.

L'exemple de code est le suivant :

import cv2

def rgb2hsv(image):
    hsv_image = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
    return hsv_image

4. Correspondance des couleurs

Après avoir converti l'image dans l'espace colorimétrique cible, nous pouvons utiliser différentes méthodes pour la correspondance des couleurs. Cet article présente deux méthodes couramment utilisées : la correspondance d'histogramme et la migration des couleurs.

  1. Correspondance d'histogramme

La correspondance d'histogramme est une méthode de correspondance de couleurs couramment utilisée. Il compare les histogrammes de couleurs de deux images et applique la distribution des couleurs d'une image à l'autre pour obtenir une correspondance des couleurs.

L'exemple de code est le suivant :

import cv2

def histogram_matching(source_image, target_image):
    source_hist = cv2.calcHist([source_image], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256])
    target_hist = cv2.calcHist([target_image], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256])
    source_hist = cv2.normalize(source_hist, source_hist).flatten()
    target_hist = cv2.normalize(target_hist, target_hist).flatten()
    
    mapping = cv2.calcHist([source_hist], [0], None, [256], [0, 256])
    mapping = cv2.normalize(mapping, mapping).flatten()
    
    matched_image = mapping[target_image]
    
    return matched_image
  1. Transfert de couleur

Le transfert de couleur est une méthode consistant à apprendre les caractéristiques de couleur d'une image et à les appliquer à une autre image. Il gère très bien la correspondance globale des couleurs de l’image.

L'exemple de code est le suivant :

import cv2

def color_transfer(source_image, target_image):
    source_hsv = cv2.cvtColor(source_image, cv2.COLOR_RGB2HSV)
    target_hsv = cv2.cvtColor(target_image, cv2.COLOR_RGB2HSV)
    
    target_hsv[:,:,0] = source_hsv[:,:,0]
    target_hsv[:,:,1] = source_hsv[:,:,1]
    
    matched_image = cv2.cvtColor(target_hsv, cv2.COLOR_HSV2RGB)
    
    return matched_image

5. Exemple d'application

Ce qui suit est un exemple d'application qui applique les caractéristiques de couleur d'une image à une autre image via la correspondance des couleurs.

import cv2
import numpy as np

def color_matching(source_image, target_image):
    source_lab = rgb2lab(source_image)
    target_lab = rgb2lab(target_image)
    
    matched_image = histogram_matching(source_lab, target_lab)
    
    return matched_image

# 读取源图片和目标图片
source_image = cv2.imread('source.jpg')
target_image = cv2.imread('target.jpg')

# 进行色彩匹配
matched_image = color_matching(source_image, target_image)

# 显示结果图片
cv2.imshow('matched_image', matched_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

6. Résumé

Cet article explique comment utiliser Python pour faire correspondre les couleurs des images et fournit un exemple de code correspondant. Les lecteurs peuvent choisir différentes méthodes de correspondance des couleurs en fonction de leurs propres besoins. La correspondance des couleurs est largement utilisée dans les domaines du traitement d'images et de la vision par ordinateur. J'espère que cet article pourra être utile aux lecteurs dans leurs études et recherches dans ce domaine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn