SEM 영상 분석 기초

SEM 영상의 명암 분포와 간단한 상 분리

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. 상분리 실습

연습 문제

문제 1

8-bit 회색조 영상의 밝기값 범위를 쓰시오.

문제 2

회색조 영상에서 일반적으로 0과 255는 각각 어떤 색에 해당하는가?

문제 3

영상의 밝기값 분포를 확인하는 그래프는 무엇인가?