데이터 재료과학 (제 18강)

IO

1. 목표

2. 색과 image 그리기

2.1. 색표현을 설명

2.2. 이미지 그리기

2.3. 미세조직 사진 활용 실습

imag

  from PIL import Image
  import numpy as np
  import matplotlib.pyplot as plt

  fn='../data/dualphase_sem.png' ## file name을 경로를 포함하여 정확하게 기입해야 한다.
  img_rgba = Image.open(fn) ## PIL, RGBA
  img_gray=img_rgba.convert('L') ## convert image into gray scale
  img_gray=np.asarray(img_gray)
  plt.imshow(img_gray,cmap='gray')

위 사진은 ferrite와 martensite가 같이 존재하는 dual-phase 철강 제품의 주사 전자 현미경 사진이다. 이 사진에서 밝은 부분은 ferrite, 어두운 부분은 martensite 상이다. 이를 구분하여 두 상의 ‘분율’을 구해보자.

  from PIL import Image
  import numpy as np
  import matplotlib.pyplot as plt
  img=Image.open('../data/dualphase_sem.png')
  img=np.asarray(img)
  print(img.shape)

  ## Canvas와 사용할 축을 2x2 grid의 형태로 만들자.
  fig=plt.figure(figsize=(7,4))
  ax1=fig.add_subplot(221)
  ax2=fig.add_subplot(222)
  ax3=fig.add_subplot(223)
  ax4=fig.add_subplot(224)

  ## 첫번째 axis에는 각 화상(pixel)에서 0~255사이의
  # 값들이 어떻게 분포하는지 histogram으로 그리자.
  ax1.hist(img.flatten())
  # 그리고 그 옆에 불러온 SEM 이미지를 그려보자.
  ax2.imshow(img,cmap='gray')

  ## 아래는 ferrite상과 martensite 상을 구분하는 간단한 예시를 살펴보자.

  #newimg=img.copy()
  #flg=img>img.mean()
  #newimg[flg]=255
  #newimg[~flg]=0
  #h=ax3.hist(newimg.flatten())
  #ax4.imshow(newimg,cmap='gray')
  #for i, ax in enumerate([ax1,ax3]):
  #    ax.set_ylim(0,300000)

  #white,black=h[0][0],h[0][-1]
  #ferrite=white/(white+black)
  #martensite=black/(white+black)
  #print(ferrite,martensite)

3. 상분리 실습