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

Bagaimana untuk mengekstrak tekstur daripada imej menggunakan Python

Aug 17, 2023 am 08:31 AM
python gambar pengekstrakan tekstur

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Apr 01, 2025 pm 05:09 PM

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Apr 01, 2025 pm 11:15 PM

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bolehkah anotasi parameter Python menggunakan rentetan? Bolehkah anotasi parameter Python menggunakan rentetan? Apr 01, 2025 pm 08:39 PM

Penggunaan alternatif anotasi parameter python Dalam pengaturcaraan Python, anotasi parameter adalah fungsi yang sangat berguna yang dapat membantu pemaju memahami dan menggunakan fungsi ...

Bagaimanakah skrip Python jelas output ke kedudukan kursor di lokasi tertentu? Bagaimanakah skrip Python jelas output ke kedudukan kursor di lokasi tertentu? Apr 01, 2025 pm 11:30 PM

Bagaimanakah skrip Python jelas output ke kedudukan kursor di lokasi tertentu? Semasa menulis skrip python, adalah perkara biasa untuk membersihkan output sebelumnya ke kedudukan kursor ...

Bagaimana menggunakan teknologi Python dan OCR untuk cuba memecahkan kod pengesahan yang kompleks? Bagaimana menggunakan teknologi Python dan OCR untuk cuba memecahkan kod pengesahan yang kompleks? Apr 01, 2025 pm 10:18 PM

Eksplorasi kod pengesahan retak menggunakan python dalam interaksi rangkaian harian, kod pengesahan adalah mekanisme keselamatan yang sama untuk mengelakkan manipulasi berniat jahat program automatik ...

Adakah Google dan AWS menyediakan sumber imej Pypi awam? Adakah Google dan AWS menyediakan sumber imej Pypi awam? Apr 01, 2025 pm 05:15 PM

Ramai pemaju bergantung kepada PYPI (PythonPackageIndex) ...

Pembangunan Aplikasi Desktop Cross-Platform Python: Perpustakaan GUI mana yang terbaik untuk anda? Pembangunan Aplikasi Desktop Cross-Platform Python: Perpustakaan GUI mana yang terbaik untuk anda? Apr 01, 2025 pm 05:24 PM

Pilihan Perpustakaan Pembangunan Aplikasi Desktop Python Python Banyak pemaju Python ingin membangunkan aplikasi desktop yang boleh dijalankan pada kedua-dua sistem Windows dan Linux ...

Python Hourglass Graph Lukisan: Bagaimana untuk mengelakkan kesilapan yang tidak ditentukan? Python Hourglass Graph Lukisan: Bagaimana untuk mengelakkan kesilapan yang tidak ditentukan? Apr 01, 2025 pm 06:27 PM

Bermula dengan Python: Lukisan Grafik Hourglass dan Pengesahan Input Artikel ini akan menyelesaikan masalah definisi berubah -ubah yang dihadapi oleh pemula python dalam program lukisan grafik Hourglass. Kod ...

See all articles