인공지능/gpt 활용

gpt 활용 노이즈 제거 및 업스케일링 최종

이게될까 2024. 5. 16. 00:11
728x90
728x90

PSNR 비교 결과

방법 PSNR
Median Filter 후 에지 검출 및 필터 적용 + Bilinear 보간법 24.96
Bilateral Filter 후 에지 검출 및 필터 적용 + Bilinear 보간법 25.11
Bilateral Filter + Bilinear 보간법 25.34

결론

  • 양방향 필터 + Bilinear 보간법: 이 방법이 가장 높은 PSNR 값을 기록했습니다 (25.34).

최종 추천 방식

가장 높은 PSNR 값을 얻기 위해 양방향 필터 + Bilinear 보간법 방식을 사용하는 것이 가장 효율적입니다.

  • 노이즈 제거: 양방향 필터를 사용하여 효과적으로 노이즈를 제거합니다.
  • 업스케일링: Bilinear 보간법을 사용하여 이미지 크기를 증가시킵니다.

이 방법은 이미지의 디테일을 최대한 보존하면서 노이즈를 효과적으로 제거하여 높은 품질의 이미지를 생성하는 데 매우 유용합니다.

이게..... 뭘 하든 다른게 못 이기네요

nTap 보간법은 다중 테이프 필터를 사용하여 이미지 해상도를 증가시키는 방법입니다. 이를 통해 Bilinear 보간법과 nTap 보간법을 비교해 보겠습니다.

  1. 양방향 필터 + Bilinear 보간법
  2. 양방향 필터 + nTap 보간법

코드를 작성하여 각 방법에 대해 PSNR을 계산해보겠습니다.

Bilateral Filter + nTapInterpolation

먼저 nTap 보간법을 구현해야 합니다. 여기에서는 간단히 Lanczos 보간법을 nTap 보간법으로 사용하겠습니다.

import cv2
import numpy as np
from skimage.metrics import peak_signal_noise_ratio as psnr

# 이미지 읽기
byy_path = "/mnt/data/byy.bmp"
by_path = "/mnt/data/by.bmp"

byy = cv2.imread(byy_path, cv2.IMREAD_GRAYSCALE)
by = cv2.imread(by_path, cv2.IMREAD_GRAYSCALE)

upscale_factor = 4

# 양방향 필터 적용
bilateral_filtered = cv2.bilateralFilter(byy, 9, 75, 75)

# Bilinear 보간법
bilinear_upscaled = cv2.resize(bilateral_filtered, (byy.shape[1]*upscale_factor, byy.shape[0]*upscale_factor), interpolation=cv2.INTER_LINEAR)
psnr_bilinear = psnr(by, bilinear_upscaled)

# nTap (Lanczos) 보간법
ntap_upscaled = cv2.resize(bilateral_filtered, (byy.shape[1]*upscale_factor, byy.shape[0]*upscale_factor), interpolation=cv2.INTER_LANCZOS4)
psnr_ntap = psnr(by, ntap_upscaled)

# 결과 출력
{
    "PSNR Bilateral + Bilinear": psnr_bilinear,
    "PSNR Bilateral + nTap (Lanczos)": psnr_ntap
}

위 코드를 실행하여 각 방법에 대해 PSNR을 계산해보겠습니다.

PSNR 비교 결과

방법 PSNR
Bilateral Filter + Bilinear 보간법 25.34
Bilateral Filter + nTap (Lanczos) 보간법 25.36

결론

  • 양방향 필터 + nTap (Lanczos) 보간법: 이 방법이 가장 높은 PSNR 값을 기록했습니다 (25.36).

최종 추천 방식

가장 높은 PSNR 값을 얻기 위해 양방향 필터 + nTap (Lanczos) 보간법 방식을 사용하는 것이 가장 효율적입니다.

  • 노이즈 제거: 양방향 필터를 사용하여 효과적으로 노이즈를 제거합니다.
  • 업스케일링: nTap 보간법 (여기서는 Lanczos 보간법을 사용)을 사용하여 이미지 크기를 증가시킵니다.

이 방법은 이미지의 디테일을 최대한 보존하면서 노이즈를 효과적으로 제거하여 높은 품질의 이미지를 생성하는 데 매우 유용합니다.

이건 그나마 높긴 한데 크게 차이는............

PSNR 비교 결과

방법 PSNR
Bilateral Filter + Bilinear 보간법 25.34
Bilateral Filter + nTap (Lanczos) 보간법 25.36
Bilateral Filter + Bicubic 보간법 25.37

결론

  • 양방향 필터 + Bicubic 보간법: 이 방법이 가장 높은 PSNR 값을 기록했습니다 (25.37).

최종 추천 방식

가장 높은 PSNR 값을 얻기 위해 양방향 필터 + Bicubic 보간법 방식을 사용하는 것이 가장 효율적입니다.

  • 노이즈 제거: 양방향 필터를 사용하여 효과적으로 노이즈를 제거합니다.
  • 업스케일링: Bicubic 보간법을 사용하여 이미지 크기를 증가시킵니다.

이 방법은 이미지의 디테일을 최대한 보존하면서 노이즈를 효과적으로 제거하여 높은 품질의 이미지를 생성하는 데 매우 유용합니다.

큰 차이가 없는거 봐선... 굳이 바꾸진 않을 것 같네요...

728x90