【python】화상 처리 그 3 ~NumPy 배열~

5315 단어 Python3numpy

이미지를 NumPy 배열로 만들기



먼저 아래와 같이 이미지를로드하고 np.array NumPy 배열로 만듭니다.
import numpy as np 
img = np.array(Image.open('画像のパス'))

차원


ndim에서 차원을 살펴 보겠습니다.
print(img.ndim)

출력 결과
3

네, 3 차원이었습니다.

모양


shape에서 모양을 살펴보십시오.
print(img.shape)

출력 결과
(150, 150, 3)

크기가 150 × 150 인 컬러 이미지를로드 할 때의 결과입니다.
이미지를 NumPy로 처리 할 때 이미지 배열은 (行データ, 列データ, RGBデータ)같아요.

슬라이스



슬라이스를 사용하여 RGB 데이터를보고 싶습니다.
이번에는 Green의 데이터를 살펴 보겠습니다.
세 번째 요소는 세 가지가 있습니다.

0번째가 적색(Red)인 데이터
첫 번째는 녹색 데이터입니다.
두 번째가 파란색 (Blue) 데이터

그러므로 Green 데이터를 가져올 때 첫 번째 데이터를 가져옵니다.
:는 모든 것을 의미합니다.
따라서 img[:, :, 1]의 의미는
행 데이터를 모두 가져 와서 열 데이터를 모두 가져 와서 두 번째 데이터를 가져 오는 것 같습니다.
print(img[:, :, 1])

출력 결과
[[138 137 135 ... 102 126 137]
 [134 134 133 ... 107 119 114]
 [131 131 130 ...  76  53  35]
 ...
 [ 32  33  32 ...  25  30  34]
 [ 29  27  28 ...  31  43  53]
 [ 27  26  30 ...  44  59  70]]

Green만의 이미지를 표시해 본다



녹색 이외의 값을 0으로 설정하면 녹색만의 이미지가됩니다.
계산은 다음과 같습니다.
img = 0*img[:, :, 0] + img[:, :, 1] + 0*img[:, :, 2]

그러면 그런 느낌의 이미지를 만들 수 있습니다.



이진화 계산을 해보자.



마지막 때에서 이진화를 계산했습니다.
절차는 다음과 같습니다.

1. 이미지를 그레이스케일로 만들기
2. 임계값에 따라 흑백

1에서는 다음과 같이 이미지를 그레이 스케일로 만들었습니다.
img = np.array(Image.open('lena.jpg').convert('L'), 'f')

이 단계에서 次元が3で形状が(150,150,3)이었던 컬러 이미지次元が2で形状が(150,150)의 회색조 이미지입니다.

2에서는 다음과 같이 이진화했습니다.
img = (img > 128) * 255

배열의 모든 요소에 대해 값이 128을 초과하면 흰색 (255)이됩니다.
첫째, (img > 128)를하면 128을 초과하는 곳은 True이고, 그렇지 않으면 False가 반환됩니다.
[[ True  True  True ...  True  True  True]
 [ True  True  True ...  True  True  True]
 [ True  True  True ... False False False]
 ...
 [False False False ... False False False]
 [False False False ... False False False]
 [False False False ... False False False]]

Python의 bool 형은 int 형의 서브 클래스이므로 True = 1, False = 0처럼 취급 할 수 있습니다.
그래서 * 255에서 모든 요소에 255를 곱하여 이진화 할 수있었습니다.
NumPy配列 그것은 편리합니다. 이렇게 쉽게 계산할 수 있습니다. 멋지 네요.

참고



htps //w w. 세주쿠. 네 t/bぉg/44850
htps : //에서. 응 kmk. 메 / py 텐 - 없는 mpy - 헛된 y - 응 ぢ
h tps : // 코데-g 랏후. 코 m / 누 mpy - 어 y

좋은 웹페이지 즐겨찾기