Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk mengekstrak tekstur daripada imej menggunakan Python

Bagaimana untuk mengekstrak tekstur daripada imej menggunakan Python

王林
王林asal
2023-08-17 08:31:502123semak imbas

Bagaimana untuk mengekstrak tekstur daripada imej menggunakan Python

Cara menggunakan Python untuk mengekstrak tekstur daripada imej

Pengenalan: Pengekstrakan tekstur ialah teknologi penting dalam pemprosesan imej, yang boleh mengekstrak ciri tekstur daripada imej untuk analisis imej, pengelasan, pemadanan dan tugasan lain. Sebagai bahasa pengaturcaraan yang popular, Python mempunyai banyak perpustakaan dan alatan pemprosesan imej, seperti PIL, opencv-python, dll. Artikel ini akan memperkenalkan cara menggunakan Python untuk mengekstrak tekstur daripada imej, dan melampirkan contoh kod.

1. Pasang dan import perpustakaan yang diperlukan
Sebelum kita mula, kita perlu memasang dan mengimport beberapa perpustakaan yang diperlukan, termasuk PIL, opencv-python dan numpy. Anda boleh menggunakan pip untuk memasangnya:

$ pip install Pillow
$ pip install opencv-python
$ pip install numpy

Kod untuk mengimport perpustakaan yang diperlukan adalah seperti berikut:

import cv2
import numpy as np
from PIL import Image

2. Baca dan paparkan gambar
Pertama, kita perlu membaca gambar untuk diproses dan memaparkannya. Di sini, kami memilih gambar pemandangan semula jadi dan menyimpannya sebagai "texture.jpg".

# 读取图片
image = Image.open("texture.jpg")
# 显示图片
image.show()

3 Tukar imej kepada imej skala kelabu
Pengestrakan tekstur biasanya dilakukan pada imej skala kelabu, jadi kita perlu menukar imej warna yang dibaca kepada imej skala kelabu.

# 转换为灰度图像
gray_image = image.convert("L")
# 显示灰度图像
gray_image.show()

4. Kira matriks kejadian bersama tahap kelabu (GLCM)
Matriks kejadian bersama tahap kelabu ialah kaedah biasa untuk analisis tekstur, yang boleh menerangkan perubahan tahap kelabu dan hubungan ruang antara piksel.

Dalam Python, kita boleh menggunakan perpustakaan opencv-python (cv2) untuk mengira matriks kejadian bersama peringkat kelabu. Langkah-langkah khusus adalah seperti berikut:

  1. Pertama, kita perlu menukar imej skala kelabu kepada tatasusunan numpy untuk pemprosesan seterusnya.
# 将灰度图像转换为numpy数组
gray_array = np.array(gray_image)
  1. Seterusnya, kita boleh menggunakan fungsi cv2.calcHist() di perpustakaan cv2 untuk mengira matriks kejadian bersama peringkat kelabu. Fungsi ini memerlukan input imej skala kelabu dan beberapa parameter, seperti bilangan tahap skala kelabu, selang piksel, ketinggian dan lebar imej, dsb.
# 计算灰度共生矩阵
glcm = cv2.calcHist([gray_array], [0], None, [256], [0, 256])
  1. Akhir sekali, kita boleh menormalkan matriks kejadian bersama tahap kelabu untuk memudahkan analisis seterusnya dan pengekstrakan ciri.
# 规范化灰度共生矩阵
glcm /= glcm.sum()

5. Pengekstrakan ciri tekstur
Selepas memperoleh matriks kejadian bersama tahap kelabu, kita boleh menggunakannya untuk mengekstrak beberapa ciri tekstur biasa, seperti tenaga, kontras, korelasi dan keseragaman (kehomogenan) dsb.

Berikut adalah beberapa kaedah pengiraan ciri tekstur biasa:

  1. Tenaga: digunakan untuk mengukur kejelasan tekstur. Formula pengiraan ialah tenaga adalah sama dengan jumlah kuasa dua setiap elemen dalam matriks kejadian bersama aras kelabu.
# 计算能量(energy)
energy = np.sum(glcm ** 2)
print("能量:", energy)
  1. Kontras: Digunakan untuk mengukur kontras antara aras kelabu dalam tekstur. Formula pengiraan ialah kontras adalah sama dengan jumlah setiap elemen dalam matriks kejadian bersama peringkat kelabu yang didarab dengan perbezaan piksel pada kedudukan yang sepadan.
# 计算对比度(contrast)
contrast = np.sum(glcm * np.abs(np.arange(256) - np.arange(256)[:,None]))
print("对比度:", contrast)
  1. Korelasi: Digunakan untuk mengukur korelasi linear tekstur. Formula pengiraan ialah korelasi adalah sama dengan hasil tambah setiap elemen dalam matriks kejadian bersama aras kelabu yang didarab dengan piksel pada kedudukan yang sepadan.
# 计算相关性(correlation)
correlation = np.sum(glcm * (np.arange(256) - np.mean(glcm)) * (np.arange(256)[:,None] - np.mean(glcm))) / (np.std(glcm) ** 2)
print("相关性:", correlation)
  1. Kehomogenan: Digunakan untuk mengukur kehalusan antara tahap kelabu dalam tekstur. Formula pengiraan ialah keseragaman adalah sama dengan jumlah setiap elemen dalam matriks kejadian bersama peringkat kelabu dibahagikan dengan perbezaan piksel pada kedudukan yang sepadan.
# 计算均匀性(homogeneity)
homogeneity = np.sum(glcm / (1 + np.abs(np.arange(256) - np.arange(256)[:,None])))
print("均匀性:", homogeneity)

6. Ringkasan
Artikel ini memperkenalkan cara menggunakan Python untuk mengekstrak tekstur daripada imej dan cara mengira ciri tekstur biasa. Dengan menggunakan PIL dan opencv-python, dua perpustakaan pemprosesan imej yang biasa digunakan, kita boleh membaca dan memaparkan imej dengan mudah, menukar imej kepada imej skala kelabu dan mengira matriks kejadian bersama skala kelabu bagi imej tersebut. Selepas memperoleh matriks kejadian bersama peringkat kelabu, kami juga memperkenalkan cara mengira ciri tekstur biasa, termasuk tenaga, kontras, korelasi dan keseragaman.

Analisis tekstur ialah hala tuju penyelidikan yang penting dalam penglihatan komputer dan memainkan peranan penting dalam analisis imej, pengelasan, pengambilan semula dan tugasan lain. Saya harap artikel ini akan membantu pembaca yang mempelajari dan menggunakan teknologi pengekstrakan tekstur.

Atas ialah kandungan terperinci Bagaimana untuk mengekstrak tekstur daripada 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