scipy+scikit-image | 제4회 파이썬 리모트 사내 연구회

「파이썬 사내 공부회&하카손」의 공개 로그가 됩니다.
오늘은, 전반 최종회. "Scipy", "scikit-image (이미지 처리)"에 대해 다룹니다.
이번에는 과학계산 라이브러리를 이용하기도 하고, 수학적인 내용에도 보충으로서 조금 살펴보겠습니다.

이 공부회에 대해서



각 회 30~60분 정도. 덜컹 거리지 않고 파이썬 why, what을 공유하는 시간이됩니다.
기본적인 프로그래밍 등의 구현은 회내는 하지 않고, 실행 데모 정도를 예정하고 있습니다. 숙제도 특별히 없기 때문에 각자 공부한 것을 재학습해 가 주세요.

전반(기초편)



지금까지의 공부회의 과거 로그는 이쪽.
제1회 : htps : // m / c ぁ s fu x / ms / ed dba 3 8971 아 067b88b
제2회 : h tps:// 퀵했다. 작은 m/c ぁ s 포x/있어 MS/095C4f4b8 아 9247 아 4392
제 3 회 : htps : // 이 m / c ぁ s fu x / ms / 825116980 c7 또는 255 a13
제4회 : htps : // 이 m / c ぁ s f x / ms / 9 a 4b8 a 513fd5b642534d

SciPy



htps //w w. s py. rg/
htps : // 이 m/세아 rch? q=s하고 py

scipy, 고급 과학 계산을 수행하는 라이브러리. 전회 공부한 numpy는 배열이나 행렬의 연산을 실시할 수 있지만, 그들도 처리할 수 있어 한층 더 신호 처리, 화상 처리, 통계라고 하는 계산이 가능.
※scipy를 사용하려면 numpy가 필요하므로 numpy도 설치하는 것.

1. 적분



scipytest.py

#coding: UTF-8

from scipy import integrate

# 3x + 5を積分する
def func(x):
    return 3*x + 5

result, err = integrate.quad(func, 0, 5)
print('Integration Result : {0}\nError : {1}'.format(result, err))


(보충 1) 함수의 정의, 실행


def 関数名(引数) : return 数式など와 같이 함수를 정의 할 수 있습니다.(関数名, 引数...) 와 같이 실행해 갈 수 있다.
htps : // / cs. py 응. jp / 3 / b et al. HTML

(보충 2) 적분




htps : // 그럼.ぃきぺぢ아. 오 rg/우우키/%에7%아9%8D%에5%88%86%에6%B3%95

2. 미분 방정식



scipytest2.py

#coding: UTF-8

from scipy.integrate import odeint #微分
import numpy as np  # numpyを使う
import matplotlib.pyplot as plt

# 微分方程式(frac{dx(t)}{dt} = -3a x)
def diff_op(x, time, a):
    return -3*a*x

x0 = 4.0
a = 3.0
time = np.linspace(0,3,50)
traject = odeint(diff_op, x0 ,time, args=(a,))

# 描画
plt.plot(time, traject, '-k', linewidth=3)
plt.xlabel('t', fontsize=24)
plt.ylabel('x', fontsize=24,rotation='horizontal')
plt.show()


(보충 3) 미분





htps : // 그럼.ぃきぺぢ아. 오 rg/우우키/%에5%베%아에%에5%88%86%에6%96%B9%에7%아8%8B%에5%BC%8F

3. Numpy 행렬 처리



scipytest3.py

#coding: UTF-8

from scipy import linalg
import numpy as np  # numpyを使う

narray = np.array([[1, 3], [2, 5]])
inv_narray = linalg.inv(narray)
print('narrayの逆行列:\n{}\n'.format(inv_narray))

result_det = linalg.det(inv_narray)
print('inv_narrayの行列式:{}\n'.format(result_det))

inv_narray_norm = linalg.norm(inv_narray)
print('inv_narrayのノルム:{}'.format(inv_narray_norm))


(보충 4) 역행렬, 행렬식, 규범



역행렬

htps //w w.ぇbぃ오. jp / 혼텐 t / % 9 % 80 % 86 % 8 % A 1 % 8 C % 5 % 88 % 97

행렬식

htps //w w.ぇbぃ오. jp / 혼텐 t / % 8 % 1 % 8C % 5 % 88 % 97 % 5 % BC % 8F

행렬 규범
htps : // 그럼.ぃきぺぢ아. 오 rg / 우키 / % 8 % 1 % 8C % 5 % 88 % 97 % 3 % 83 % 8 % 3 % 83 % B % 3 % 83 % 0

scikit-image



scikit-image라는 이미지 처리 라이브러리를 설치하여 이미지 처리를 할 수 있습니다.

skimagetest.py

#coding: UTF-8

import numpy as np
from skimage import io
from skimage.color import rgb2gray
import skimage.filters as fil
import skimage.filters.rank as rank
import skimage.morphology as mor

# 画像表示
I = io.imread('images/lena.jpg')
print(I.shape)
io.imshow(I)
io.show()

# グレースケール変換
G = rgb2gray(I)
io.imshow(G)
io.show()

# 画像の保存
io.imsave('images/lenagray.jpg', G)

# 2値化(大津式)
img = io.imread('images/lena.jpg',as_grey=True,plugin=None,flatten=None)
thrOtsu = fil.threshold_otsu(img)

# 二値化
thrImg = ((thrOtsu < img) * 255).astype(np.uint8)
io.imshow(thrImg)
io.show()

# ガウシアンフィルタ
sigma = 1
gauImg = fil.gaussian_filter(img, sigma=sigma)
io.imshow(gauImg)
io.show()

# メジアンフィルタ
selem = mor.disk(10)
medImg = rank.median(img, selem=selem)
io.imshow(medImg)
io.show()


원본 이미지(lena.jpg)


그레이 스케일


이진화


가우시안 필터


메디안 필터


다음 예정



제4회는 여기까지. 다음 번 이후의 라인업은 아래를 참조하십시오.
※내용이 대폭 변경되는 경우도 있습니다.

지금까지의 공부회의 과거 로그는 이쪽.
제1회 : htps : // m / c ぁ s fu x / ms / ed dba 3 8971 아 067b88b
제2회 : h tps:// 퀵했다. 작은 m/c ぁ s 포x/있어 MS/095C4f4b8 아 9247 아 4392
제 3 회 : htps : // 이 m / c ぁ s fu x / ms / 825116980 c7 또는 255 a13
제4회 : htps : // 이 m / c ぁ s f x / ms / 9 a 4b8 a 513fd5b642534d

후반(응용편)의 예정



후반의 공부회는 2018년 3월을 예정. 전반에 접해 온 기초를 활용하면서, 보다 실용적·실천적인 것을 봅니다.
  • 추천 라이브러리( htps : // 이 m / 벌어지기 / / ms / 5187713 반바지 6cb30532bf )
  • 웹 애플리케이션
  • tensorflow (딥 러닝)
  • 추천 엔진 구현 (점수)
  • 자연언어 처리 프로그램의 구현(※mecab등도 활용?)
  • 회귀 분석과 같은 통계 프로그램 구현
  • 데이터 클렌징 관련
  • 기타 알고리즘 구축, 해커슨 형식
  • kaggle의 데이터 세트를 활용하는 것도 재미있을 것입니다
  • 좋은 웹페이지 즐겨찾기