Bagaimana untuk mengekstrak tekstur daripada imej menggunakan Python

王林
Lepaskan: 2023-08-17 08:31:50
asal
1957 orang telah melayarinya

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
Salin selepas log masuk

Kod untuk mengimport perpustakaan yang diperlukan adalah seperti berikut:

import cv2
import numpy as np
from PIL import Image
Salin selepas log masuk

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()
Salin selepas log masuk

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()
Salin selepas log masuk

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)
Salin selepas log masuk
  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])
Salin selepas log masuk
  1. Akhir sekali, kita boleh menormalkan matriks kejadian bersama tahap kelabu untuk memudahkan analisis seterusnya dan pengekstrakan ciri.
# 规范化灰度共生矩阵
glcm /= glcm.sum()
Salin selepas log masuk

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)
Salin selepas log masuk
  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)
Salin selepas log masuk
  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)
Salin selepas log masuk
  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)
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!