Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk mewarna padanan imej menggunakan Python

Bagaimana untuk mewarna padanan imej menggunakan Python

WBOY
WBOYasal
2023-08-25 23:07:471753semak imbas

Bagaimana untuk mewarna padanan imej menggunakan Python

Cara menggunakan Python untuk mewarna padanan imej

1 Pengenalan

Dalam bidang pemprosesan imej dan penglihatan komputer, pemadanan warna adalah tugas biasa. Padanan warna boleh digunakan dalam pelbagai aplikasi, seperti pemulihan imej, sintesis imej, klasifikasi imej, dsb. Artikel ini akan memperkenalkan cara menggunakan Python untuk mewarna padanan imej dan menyediakan kod sampel yang sepadan.

2. Persediaan

Sebelum kita mula, kita perlu menyediakan beberapa persekitaran kerja yang diperlukan. Pertama, anda perlu memasang Python dan perpustakaan berkaitan.

  1. Pasang Python

Python ialah bahasa pengaturcaraan peringkat tinggi, dan versi yang sesuai boleh dimuat turun dan dipasang di tapak web rasmi https://www.python.org/.

  1. Pasang perpustakaan yang berkaitan

Untuk pemprosesan imej, kita perlu menggunakan perpustakaan OpenCV dan NumPy. Anda boleh menggunakan arahan pip untuk memasang dua perpustakaan ini:

pip install opencv-python
pip install numpy

3. Penukaran ruang warna

Sebelum padanan warna, kita perlu menukar imej daripada ruang warna RGB kepada ruang warna lain terlebih dahulu. Ruang warna RGB ialah salah satu kaedah perwakilan warna yang paling biasa, tetapi ia bukanlah yang paling sesuai untuk padanan warna. Ruang warna padanan warna yang biasa digunakan termasuk ruang warna Lab dan ruang warna HSV.

  1. Penukaran ruang warna makmal

Ruang warna makmal adalah berdasarkan persepsi warna mata manusia. Ia membahagikan warna kepada kecerahan (L) dan dua saluran warna (a dan b). Dengan menukar imej RGB kepada ruang warna Lab, kita boleh menerangkan dengan lebih baik ciri warna imej tersebut.

Kod sampel adalah seperti berikut:

import cv2

def rgb2lab(image):
    lab_image = cv2.cvtColor(image, cv2.COLOR_RGB2Lab)
    return lab_image
  1. Penukaran ruang warna HSV

Ruang warna HSV digunakan untuk menerangkan warna (H), ketepuan (S) dan kecerahan (V) warna. Ruang warna HSV lebih sesuai untuk mewakili ciri warna.

Kod contoh adalah seperti berikut:

import cv2

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

4 Padanan warna

Selepas menukar imej kepada ruang warna sasaran, kita boleh menggunakan kaedah yang berbeza untuk padanan warna. Artikel ini memperkenalkan dua kaedah yang biasa digunakan: padanan histogram dan migrasi warna.

  1. Histogram Matching

Histogram matching ialah kaedah padanan warna yang biasa digunakan. Ia membandingkan histogram warna dua imej dan menggunakan taburan warna satu imej kepada imej lain untuk mencapai padanan warna.

Kod sampel adalah seperti berikut:

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. Pemindahan warna

Pemindahan warna ialah kaedah dengan mempelajari ciri warna daripada satu imej dan mengaplikasikannya pada imej yang lain. Ia mengendalikan padanan warna keseluruhan imej dengan sangat baik.

Kod contoh adalah seperti berikut:

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 Contoh aplikasi

Berikut adalah contoh aplikasi yang menerapkan ciri-ciri warna satu imej kepada imej lain melalui padanan warna.

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. Ringkasan

Artikel ini memperkenalkan cara menggunakan Python untuk mewarnakan imej padanan dan menyediakan kod sampel yang sepadan. Pembaca boleh memilih kaedah yang berbeza untuk padanan warna mengikut keperluan mereka sendiri. Padanan warna digunakan secara meluas dalam bidang pemprosesan imej dan penglihatan komputer Saya harap artikel ini dapat membantu pembaca dalam kajian dan penyelidikan mereka dalam bidang ini.

Atas ialah kandungan terperinci Bagaimana untuk mewarna padanan imej menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn