>  기사  >  백엔드 개발  >  Python을 사용하여 이미지에서 텍스처를 추출하는 방법

Python을 사용하여 이미지에서 텍스처를 추출하는 방법

王林
王林원래의
2023-08-17 08:31:502117검색

Python을 사용하여 이미지에서 텍스처를 추출하는 방법

Python을 사용하여 이미지에서 텍스처를 추출하는 방법

소개: 텍스처 추출은 이미지 분석, 분류, 일치 및 기타 작업을 위해 이미지에서 텍스처 특징을 추출할 수 있는 이미지 처리에서 중요한 기술입니다. 널리 사용되는 프로그래밍 언어인 Python에는 PIL, opencv-python 등과 같은 풍부한 이미지 처리 라이브러리와 도구가 있습니다. 이 기사에서는 Python을 사용하여 이미지에서 텍스처를 추출하는 방법을 소개하고 코드 예제를 첨부합니다.

1. 필수 라이브러리 설치 및 가져오기
시작하기 전에 PIL, opencv-python 및 numpy를 포함한 일부 필수 라이브러리를 설치하고 가져와야 합니다. pip를 사용하여 설치할 수 있습니다.

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

필요한 라이브러리를 가져오는 코드는 다음과 같습니다.

import cv2
import numpy as np
from PIL import Image

2. 사진 읽기 및 표시
먼저 처리할 사진을 읽고 표시해야 합니다. 여기서는 자연 풍경 사진을 선택하여 "texture.jpg"로 저장했습니다.

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

3. 이미지를 회색조 이미지로 변환
텍스처 추출은 일반적으로 회색조 이미지에서 수행되므로 읽은 컬러 이미지를 회색조 이미지로 변환해야 합니다.

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

4. GLCM(계조 동시 발생 행렬) 계산
회색 레벨 동시 발생 행렬은 질감 분석을 위한 일반적인 방법으로, 회색 레벨 변화와 픽셀 간의 공간 관계를 설명할 수 있습니다.

Python에서는 opencv-python 라이브러리(cv2)를 사용하여 회색조 동시 발생 행렬을 계산할 수 있습니다. 구체적인 단계는 다음과 같습니다.

  1. 먼저 후속 처리를 위해 회색조 이미지를 numpy 배열로 변환해야 합니다.
# 将灰度图像转换为numpy数组
gray_array = np.array(gray_image)
  1. 다음으로 cv2 라이브러리의 cv2.calcHist() 함수를 사용하여 회색조 동시 발생 행렬을 계산할 수 있습니다. 이 기능을 사용하려면 그레이스케일 이미지와 그레이스케일 레벨 수, 픽셀 간격, 이미지 높이 및 너비 등과 같은 일부 매개변수를 입력해야 합니다.
# 计算灰度共生矩阵
glcm = cv2.calcHist([gray_array], [0], None, [256], [0, 256])
  1. 마지막으로 회색조 동시 발생 행렬을 정규화하여 후속 분석 및 특징 추출을 용이하게 할 수 있습니다.
# 规范化灰度共生矩阵
glcm /= glcm.sum()

5. 질감 특징 추출
회색조 동시 발생 행렬을 얻은 후 이를 사용하여 에너지, 대비, 상관 관계 및 균일성(동질성) 등과 같은 몇 가지 일반적인 질감 특징을 추출할 수 있습니다.

다음은 몇 가지 일반적인 질감 특징 계산 방법입니다.

  1. 에너지(energy): 질감의 선명도를 측정하는 데 사용됩니다. 계산식은 에너지가 명암도 동시발생행렬의 각 원소의 제곱의 합과 같다는 것이다.
# 计算能量(energy)
energy = np.sum(glcm ** 2)
print("能量:", energy)
  1. 대비: 텍스처의 회색 레벨 간의 대비를 측정하는 데 사용됩니다. 계산식은 명암도 동시 발생 행렬의 각 요소의 합에 해당 위치의 픽셀 차이를 곱한 것과 같다는 것입니다.
# 计算对比度(contrast)
contrast = np.sum(glcm * np.abs(np.arange(256) - np.arange(256)[:,None]))
print("对比度:", contrast)
  1. 상관관계: 텍스처의 선형 상관관계를 측정하는 데 사용됩니다. 계산식은 상관관계가 계조 동시 발생 행렬의 각 요소의 곱의 합에 해당 위치의 픽셀을 곱한 것과 같다는 것입니다.
# 计算相关性(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. 균질성: 텍스처의 회색 레벨 사이의 부드러움을 측정하는 데 사용됩니다. 계산 공식은 균일성은 계조 동시 발생 행렬의 각 요소의 합을 해당 위치의 픽셀 차이로 나눈 값과 같다는 것입니다.
# 计算均匀性(homogeneity)
homogeneity = np.sum(glcm / (1 + np.abs(np.arange(256) - np.arange(256)[:,None])))
print("均匀性:", homogeneity)

6. 요약
이 글에서는 Python을 사용하여 이미지에서 텍스처를 추출하는 방법과 일반적인 텍스처 특징을 계산하는 방법을 소개합니다. 일반적으로 사용되는 두 가지 이미지 처리 라이브러리인 PIL과 opencv-python을 사용하여 이미지를 쉽게 읽고 표시하고, 이미지를 회색조 이미지로 변환하고, 이미지의 회색조 동시 발생 행렬을 계산할 수 있습니다. 명암도 동시발생 행렬을 얻은 후 에너지, 대비, 상관관계, 균일성을 포함한 일반적인 질감 특징을 계산하는 방법도 소개했습니다.

텍스처 분석은 컴퓨터 비전의 중요한 연구 방향이며 이미지 분석, 분류, 검색 및 기타 작업에서 중요한 역할을 합니다. 이 글이 텍스처 추출 기술을 배우고 적용하는 독자들에게 도움이 되기를 바랍니다.

위 내용은 Python을 사용하여 이미지에서 텍스처를 추출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.