딥 러닝과 물리학으로 Python을 공부하는 ① (이미지 처리)
1. 소개
numpy를 사용하여 이미지를 처리합니다.
2.목차
1. 소개
2.목차
3. 어떤 사고 실험
4. 코드
5. 정리
참고
2. 어떤 사고 실험
이 책에는 몇 가지 사고 실험이 있습니다. 그 내용은 요정이 눈앞의 버튼을 1분마다 누르거나 누르지 않는 것을 선택하는 것을 반복해 5일간, 철야로 작업시켜 그 결과를 행렬로 표현하면 사람의 얼굴이 되어 있다고 하는 것 이다. 이 요정은 물리학에서 말하는 맥스웰의 악마이다.
이 노동은 노동 기준법을 분명히 위반했다.
제32조
사용자는 노동자에게 휴식시간을 제외하고 일주일에 대해 40시간을 넘어 노동시켜서는 안 된다.
사용자는 일주일의 각 날에 대해서는 근로자에게 휴식시간을 제외하고 하루에 대해 8시간을 넘어 노동시켜서는 안 된다.
그러나 요정에 노동 기준법이 적용되는지 불분명하기 때문에 신경 쓰지 않는다. 이번에 요정이 만든 이미지는 lenna 이미지라고 불리는 샘플 데이터이다. 이번에는 이 사이트의 것을 사용했다. 이것을 사용하여 이미지 처리를 수행합니다.
4. 코드
Pillow (PIL)와 numpy를 사용하여 이미지를 numpy 배열로 만듭니다.
from PIL import Image
import numpy as np
# PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列に変換
im = np.array(Image.open("画像のパス名").convert('L'))
# NumPy配列のshapeと、要素のデータ型を表示
print(im.shape, im.dtype)
# グレースケール化した画像のNumPy配列に変換したものを表示
print(im)
# 上記NumPy配列をテキストで保存
np.savetxt('im_lenna.txt', im)
(150, 150) uint8
[[164 163 161 ... 132 154 164]
[160 160 159 ... 136 146 141]
[157 157 156 ... 105 80 61]
...
[ 54 55 54 ... 53 58 64]
[ 51 49 50 ... 59 72 83]
[ 49 48 52 ... 71 89 100]]
150×150=22500이므로
im2 = im.reshape([1, 22500])#一次元配列に変更
np.savetxt('im_lenna.txt', im2)# 上記NumPy配列をテキストで保存
lenna = np.loadtxt('im_lenna.txt')# 上記で保存したNumPy配列を読み出す
print(lenna)
[164. 163. 161. ... 71. 89. 100.]
이것을 이미지로 출력합니다.
import matplotlib.pyplot as plt
%matplotlib inline
plt.imshow(lenna.reshape(150,150), cmap=plt.cm.gray_r)
또한이를 비교하기 위해 무작위로 숫자를 곱한 이미지를 출력합니다.
첫째,이 이미지는
print(lenna)
print(lenna.shape)
print(max(lenna))
[164. 163. 161. ... 71. 89. 100.]
(22500,)
236.0
를 사용하여 무작위로 값을 할당합니다.
import random
random_lenna = [random.randint(0, 236) for i in range(len(lenna))]
random_lenna_n = np.array(random_lenna, dtype=float)
print(random_lenna_n)
[117. 92. 1. ... 88. 12. 55.]
이것을 이미지로 출력합니다.
plt.imshow(random_lenna_n.reshape(150,150), cmap=plt.cm.gray_r)
5. 정리
책 중에서는 요정이 버튼을 누르거나 누르지 않는 두 가지 값이었지만, 이번 코드는 0에서 236까지의 값을 넣는 작업을 한 것에 대응한다. 요정이 적당히 숫자를 선택해 가면 2장째의 이미지와 같은 전형적인 상태가 될 것이다. 지적, 코멘트 등을 주시면 다행입니다.
참고
딥 러닝과 물리학 원리를 아는 응용이 가능
Reference
이 문제에 관하여(딥 러닝과 물리학으로 Python을 공부하는 ① (이미지 처리)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/klnW/items/a48bd0b4f625fb64085d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. 소개
2.목차
3. 어떤 사고 실험
4. 코드
5. 정리
참고
2. 어떤 사고 실험
이 책에는 몇 가지 사고 실험이 있습니다. 그 내용은 요정이 눈앞의 버튼을 1분마다 누르거나 누르지 않는 것을 선택하는 것을 반복해 5일간, 철야로 작업시켜 그 결과를 행렬로 표현하면 사람의 얼굴이 되어 있다고 하는 것 이다. 이 요정은 물리학에서 말하는 맥스웰의 악마이다.
이 노동은 노동 기준법을 분명히 위반했다.
제32조
사용자는 노동자에게 휴식시간을 제외하고 일주일에 대해 40시간을 넘어 노동시켜서는 안 된다.
사용자는 일주일의 각 날에 대해서는 근로자에게 휴식시간을 제외하고 하루에 대해 8시간을 넘어 노동시켜서는 안 된다.
그러나 요정에 노동 기준법이 적용되는지 불분명하기 때문에 신경 쓰지 않는다. 이번에 요정이 만든 이미지는 lenna 이미지라고 불리는 샘플 데이터이다. 이번에는 이 사이트의 것을 사용했다. 이것을 사용하여 이미지 처리를 수행합니다.
4. 코드
Pillow (PIL)와 numpy를 사용하여 이미지를 numpy 배열로 만듭니다.
from PIL import Image
import numpy as np
# PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列に変換
im = np.array(Image.open("画像のパス名").convert('L'))
# NumPy配列のshapeと、要素のデータ型を表示
print(im.shape, im.dtype)
# グレースケール化した画像のNumPy配列に変換したものを表示
print(im)
# 上記NumPy配列をテキストで保存
np.savetxt('im_lenna.txt', im)
(150, 150) uint8
[[164 163 161 ... 132 154 164]
[160 160 159 ... 136 146 141]
[157 157 156 ... 105 80 61]
...
[ 54 55 54 ... 53 58 64]
[ 51 49 50 ... 59 72 83]
[ 49 48 52 ... 71 89 100]]
150×150=22500이므로
im2 = im.reshape([1, 22500])#一次元配列に変更
np.savetxt('im_lenna.txt', im2)# 上記NumPy配列をテキストで保存
lenna = np.loadtxt('im_lenna.txt')# 上記で保存したNumPy配列を読み出す
print(lenna)
[164. 163. 161. ... 71. 89. 100.]
이것을 이미지로 출력합니다.
import matplotlib.pyplot as plt
%matplotlib inline
plt.imshow(lenna.reshape(150,150), cmap=plt.cm.gray_r)
또한이를 비교하기 위해 무작위로 숫자를 곱한 이미지를 출력합니다.
첫째,이 이미지는
print(lenna)
print(lenna.shape)
print(max(lenna))
[164. 163. 161. ... 71. 89. 100.]
(22500,)
236.0
를 사용하여 무작위로 값을 할당합니다.
import random
random_lenna = [random.randint(0, 236) for i in range(len(lenna))]
random_lenna_n = np.array(random_lenna, dtype=float)
print(random_lenna_n)
[117. 92. 1. ... 88. 12. 55.]
이것을 이미지로 출력합니다.
plt.imshow(random_lenna_n.reshape(150,150), cmap=plt.cm.gray_r)
5. 정리
책 중에서는 요정이 버튼을 누르거나 누르지 않는 두 가지 값이었지만, 이번 코드는 0에서 236까지의 값을 넣는 작업을 한 것에 대응한다. 요정이 적당히 숫자를 선택해 가면 2장째의 이미지와 같은 전형적인 상태가 될 것이다. 지적, 코멘트 등을 주시면 다행입니다.
참고
딥 러닝과 물리학 원리를 아는 응용이 가능
Reference
이 문제에 관하여(딥 러닝과 물리학으로 Python을 공부하는 ① (이미지 처리)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/klnW/items/a48bd0b4f625fb64085d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Pillow (PIL)와 numpy를 사용하여 이미지를 numpy 배열로 만듭니다.
from PIL import Image
import numpy as np
# PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列に変換
im = np.array(Image.open("画像のパス名").convert('L'))
# NumPy配列のshapeと、要素のデータ型を表示
print(im.shape, im.dtype)
# グレースケール化した画像のNumPy配列に変換したものを表示
print(im)
# 上記NumPy配列をテキストで保存
np.savetxt('im_lenna.txt', im)
(150, 150) uint8
[[164 163 161 ... 132 154 164]
[160 160 159 ... 136 146 141]
[157 157 156 ... 105 80 61]
...
[ 54 55 54 ... 53 58 64]
[ 51 49 50 ... 59 72 83]
[ 49 48 52 ... 71 89 100]]
150×150=22500이므로
im2 = im.reshape([1, 22500])#一次元配列に変更
np.savetxt('im_lenna.txt', im2)# 上記NumPy配列をテキストで保存
lenna = np.loadtxt('im_lenna.txt')# 上記で保存したNumPy配列を読み出す
print(lenna)
[164. 163. 161. ... 71. 89. 100.]
이것을 이미지로 출력합니다.
import matplotlib.pyplot as plt
%matplotlib inline
plt.imshow(lenna.reshape(150,150), cmap=plt.cm.gray_r)
또한이를 비교하기 위해 무작위로 숫자를 곱한 이미지를 출력합니다.
첫째,이 이미지는
print(lenna)
print(lenna.shape)
print(max(lenna))
[164. 163. 161. ... 71. 89. 100.]
(22500,)
236.0
를 사용하여 무작위로 값을 할당합니다.
import random
random_lenna = [random.randint(0, 236) for i in range(len(lenna))]
random_lenna_n = np.array(random_lenna, dtype=float)
print(random_lenna_n)
[117. 92. 1. ... 88. 12. 55.]
이것을 이미지로 출력합니다.
plt.imshow(random_lenna_n.reshape(150,150), cmap=plt.cm.gray_r)
5. 정리
책 중에서는 요정이 버튼을 누르거나 누르지 않는 두 가지 값이었지만, 이번 코드는 0에서 236까지의 값을 넣는 작업을 한 것에 대응한다. 요정이 적당히 숫자를 선택해 가면 2장째의 이미지와 같은 전형적인 상태가 될 것이다. 지적, 코멘트 등을 주시면 다행입니다.
참고
딥 러닝과 물리학 원리를 아는 응용이 가능
Reference
이 문제에 관하여(딥 러닝과 물리학으로 Python을 공부하는 ① (이미지 처리)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/klnW/items/a48bd0b4f625fb64085d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(딥 러닝과 물리학으로 Python을 공부하는 ① (이미지 처리)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/klnW/items/a48bd0b4f625fb64085d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)