Programming & Simulation

Accelerating Research through Code.
데이터 자동화, 광학 시뮬레이션, 그리고 이미지 분석.

2024 - 2025
🔐

PUF Security

NIST 표준 기반
엔트로피 검증

📊

Simulation Automation

50+ 파일 자동 병합
데이터 처리 효율화

👁️

Image Analysis

OpenCV 기반
입자 자동 측정

💡

Interactive Simulation

실시간 광학 시뮬레이터
웹 기반 TMM 엔진

🔐

PUF Randomness Assessment (NIST)

2024 | Python, Google Colab | Security Analysis of Materials

Objective

하드웨어 보안 기술인 PUF(Physical Unclonable Function)의 성능 검증을 위해, 소재 미세구조 이미지(SEM)가 가지는 고유한 난수성(Entropy)을 정량적으로 평가.

Logic & Trouble Shooting

  • Issue: 기존 NIST SP 800-22 도구 사용 시 Binary Sequence 읽기 과정에서 Underflow Error 발생 확인.
  • Solution: 최신 표준인 NIST SP 800-90B (Entropy Assessment)로 전환하여 Python(Scipy)으로 직접 구현.
  • Key Algorithms: Min-Entropy, Chi-Square Test, Uniqueness & Reproducibility 검증 코드 작성.

Impact

✓ 기존 도구(SP 800-22) 에러 해결 → 최신 표준(SP 800-90B) 도입
✓ 10회 반복 테스트로 재현성 검증 완료
✓ 재료 고유 패턴 기반 보안 키 생성 가능성 입증

# NIST SP 800-90B Implementation
from PIL import Image
import numpy as np
from collections import Counter
import math

def min_entropy_test(image_path):
    image = Image.open(image_path).convert('L')
    data = np.array(image).flatten()
    
    # Calculate Min-Entropy
    p_max = max(Counter(data).values()) / len(data)
    min_entropy = -math.log2(p_max)
    
    return min_entropy

def chi_square_test(data):
    observed = Counter(data)
    expected = len(data) / len(observed)
    chi_sq = sum((obs - expected)**2 / expected 
                 for obs in observed.values())
    return chi_sq

# Reproducibility Test (10 iterations)
for i in range(10):
    entropy = min_entropy_test(image_path)
    print(f"Iteration {i+1}: {entropy:.4f}")
Python • NIST SP 800-90B
📊

Optical Simulation & Data Automation

2024 - 2025 | RSoft (DiffractMOD), Python (Pandas)

Objective

Smart Glass 및 Radiative Cooling 소재의 광학적 거동을 예측하기 위해 RSoft 시뮬레이션을 수행하고, 수십 개의 결과 데이터(DAT 파일)를 효율적으로 처리.

Key Logic

  • RSoft Simulation: 물질의 굴절률(n), 흡수계수(k)를 입력하여 다층 박막 구조에서의 빛의 행동(반사/투과) 예측.
  • Automation Pipeline: 50개 이상의 시뮬레이션 결과 파일(.dat)에서 정규표현식(RegEx)으로 파라미터를 추출하고, Pandas를 이용해 하나의 Excel 파일로 병합하는 자동화 스크립트 개발.

Impact

✓ 50+ 시뮬레이션 파일 수작업 처리 → 완전 자동화
✓ 데이터 병합 시간 대폭 절약 (수 시간 → 수 분)
✓ 광학 소재 연구 효율성 향상

# RSoft Data Automation Pipeline
import os
import re
import pandas as pd

def extract_number(filename):
    """Extract parameter from filename"""
    match = re.search(r'(\d+)_m6_absorption\.dat', 
                      filename)
    return int(match.group(1)) if match else -1

# Load and merge 50+ simulation files
path = '/simulation_results'
files = [f for f in os.listdir(path) 
         if f.endswith('.dat')]
files.sort(key=extract_number)

all_data = pd.DataFrame()

for file in files:
    data = pd.read_csv(f'{path}/{file}', 
                       skiprows=2, header=None)
    num = extract_number(file)
    all_data[f'Param_{num}'] = data.iloc[:, 0]

# Export to Excel
all_data.to_excel('merged_results.xlsx')
Python • Pandas • RegEx
👁️

SEM Image Analysis (Computer Vision)

2024 | Python (OpenCV), Matplotlib

Objective

수작업으로 측정하기 힘든 수천 개의 미세 입자(Cs₄PbBr₆ 등) 크기 분포를 OpenCV를 활용하여 자동으로 측정하고 통계 데이터 확보.

Key Logic

  • Preprocessing: SEM 이미지의 스케일바(Scale-bar) 픽셀 비율을 계산하여 실제 물리적 크기(µm) 환산 기준 마련.
  • Contouring: 이미지 이진화(Thresholding) 및 Morphological Operation으로 입자 경계선(Contour) 검출.

Impact

✓ 수천 개 입자 수작업 측정 불가능 → 자동 정량 분석
✓ Cs₄PbBr₆ 입자 평균 크기 온도별 비교 데이터 확보
✓ 통계 기반 연구 신뢰도 향상

# SEM Image Particle Analysis
import cv2
import numpy as np
from matplotlib import pyplot as plt

# Load and preprocess SEM image
image = cv2.imread('sem_image.tif', 0)
_, thresh = cv2.threshold(image, 127, 255, 
                          cv2.THRESH_BINARY)

# Morphological operations
kernel = np.ones((3,3), np.uint8)
opening = cv2.morphologyEx(thresh, 
                           cv2.MORPH_OPEN, kernel)

# Contour detection
contours, _ = cv2.findContours(opening, 
                               cv2.RETR_EXTERNAL,
                               cv2.CHAIN_APPROX_SIMPLE)

particle_sizes = []
for cnt in contours:
    if cv2.contourArea(cnt) > min_area:
        # Fit ellipse and calculate dimensions
        ellipse = cv2.fitEllipse(cnt)
        major_axis, minor_axis = ellipse[1]
        particle_sizes.append(major_axis)

print(f"Analyzed {len(particle_sizes)} particles")
plt.hist(particle_sizes, bins=50)
Python • OpenCV • Matplotlib
💡

Interactive Optical Simulation

2024 - 2025 | React, TypeScript, Canvas API

Objective

Advanced Science 2025 논문에서 제안된 Ag/TiO₂ 다층 박막 구조의 광학적 특성을 웹 브라우저에서 실시간으로 시뮬레이션하고 시각화하는 인터랙티브 도구 개발.
연구자들이 실험 전에 다양한 구조 조합을 빠르게 테스트할 수 있도록 지원.

Key Implementation

  • Physics Engine: Transfer Matrix Method (TMM)를 JavaScript로 구현하여 각 층의 굴절률과 두께를 기반으로 반사율 스펙트럼 계산.
  • Canvas Visualization: HTML5 Canvas API를 활용해 가시광선 스펙트럼 배경색과 함께 실시간 그래프 렌더링. 공진 파장(Dip Wavelength) 자동 탐지 및 표시.
  • UI/UX Design: 슬라이더를 통한 직관적인 파라미터 조작 인터페이스 구현. 계산 결과를 실시간으로 시각화하여 즉각적인 피드백 제공.

Impact

✓ 고가의 시뮬레이션 소프트웨어 없이 웹에서 즉시 실행 가능
✓ 연구자/학생들이 광학 원리를 시각적으로 학습할 수 있는 교육 도구로 활용
✓ 실험 전 다양한 구조 조합을 신속하게 탐색하여 연구 효율성 향상

// Transfer Matrix Method in React
const calculateTMM = (layers, wavelength) => {
  let M = [[1, 0], [0, 1]]; // Identity matrix
  const n_air = 1.0;
  
  layers.forEach(layer => {
    const { material, thickness } = layer;
    const n = getRefractiveIndex(material, wavelength);
    
    // Phase shift
    const delta = (2 * Math.PI * n * thickness) / wavelength;
    
    // Characteristic matrix
    const cos_d = Math.cos(delta);
    const sin_d = Math.sin(delta);
    
    const M_layer = [
      [cos_d, sin_d / n],
      [n * sin_d, cos_d]
    ];
    
    M = matrixMultiply(M, M_layer);
  });
  
  // Calculate reflectance
  const r = calculateReflection(M, n_air, n_substrate);
  return Math.pow(Math.abs(r), 2) * 100;
};
React • TypeScript • Canvas

💡 Live Demo: 아래에서 직접 파라미터를 조절하며 광학 특성 변화를 실시간으로 확인할 수 있습니다.

🎛️ Interactive TMM Simulator

⬆️ Adjust layer thickness above
Then click Calculate to visualize
🚀 Side Project
🌐

Celina's Dopamine Studio (celinastudio.com)

Objective

연구 성과를 정적인 PDF나 PPT가 아닌 인터랙티브 웹 애플리케이션으로 구현하여 포트폴리오의 접근성과 시각적 전달력을 강화.

Key Features

  • Responsive Design: 모바일, 태블릿, 데스크톱 모든 디바이스에서 최적화된 UI/UX 제공. Flexbox 및 CSS Grid 기반 레이아웃 설계.
  • Dynamic Content: React의 상태 관리(State Management)를 활용하여 사용자 인터랙션에 따라 콘텐츠가 동적으로 변화.
  • Performance Optimization: Next.js의 Image Optimization, Code Splitting, SSR(Server-Side Rendering)을 활용하여 초기 로딩 속도 개선 (Lighthouse Score 95+).
  • SEO & Accessibility: Semantic HTML, Meta Tags, Alt Text 등을 통해 검색 엔진 최적화 및 스크린 리더 접근성 확보.

Impact

✓ 연구 성과를 비전공자도 쉽게 이해할 수 있도록 시각화
✓ 웹 개발 역량 입증을 통한 연구+개발 융합 인재 포지셔닝
✓ 취업/입학 지원 시 차별화된 포트폴리오로 활용

ReactNext.jsTypeScriptResponsive UISEO
Celina's Dopamine Studio Homepage

Interactive Portfolio Homepage

🛠️ Technical Tools

PythonPandasOpenCVRSoftReactNext.jsTypeScriptCanvas API