[DIP] plt.imshow: matplotlib.pyplot

2024. 9. 16. 14:12·Programming/DIP
728x90
728x90

plt.imshow()는 matplotlib에서 이미지를 시각화할 때 사용되는 함수


Signature:

plt.imshow(X, cmap=None, norm=None, interpolation=None, 
           aspect=None, alpha=None, vmin=None, vmax=None, 
           origin=None, extent=None, filternorm=True, 
           filterrad=4.0, resample=None, url=None, **kwargs)

Parmaters:

  1. X (array-like or PIL image):
    • 화면에 표시할 이미지 데이터.
    • 2D 배열 또는 3D 배열 형태
    • 2D는 그레이스케일 이미지, 3D는 RGB 또는 RGBA 이미지.
    • 데이터 타입은 float, int 등 다양한 형식을 지원
    • 값의 범위는 0.0 ~ 1.0 또는 0 ~ 255입니다.
  2. cmap (str or Colormap, default=None):
    • 그레이스케일이나 2D 배열을 컬러 맵으로 변환하여 색을 입힐 때 사용됨.
    • 'gray', 'viridis', 'hot', 'cool' 등 다양한 컬러 맵을 사용 가능.
  3. norm (Normalize, optional):
    • 데이터의 값 범위를 지정된 컬러 맵 범위로 Normalization(정규화)하는 데 사용됨.
    • 예를 들어, 데이터를 특정 범위로 정규화하여 시각화할 수 있음.
  4. interpolation (str, default=None):
    • 이미지 확대/축소 시 사용하는 보간 방법을 지정.
    • 사용 가능한 값
      • 'nearest',
      • 'bilinear',
      • 'bicubic',
      • 'lanczos'
    • 기본값은 None이며, 이는 기본 보간 방식을 사용.
  5. aspect (str or float, default=None):
    • 이미지의 가로-세로 비율을 조정.
    • 'equal'을 사용하면 이미지의 픽셀 비율을 1:1로 설정
    • 'auto'는 데이터의 크기에 따라 비율을 조정.
  6. alpha (float, default=None):
    • 이미지의 투명도를 설정.
    • 값의 범위는 0.0 (완전히 투명)에서 1.0 (완전히 불투명).
  7. vmin, vmax (scalar, optional):
    • 컬러 맵의 최소값과 최대값을 지정.
    • 이 값들을 설정하면 보여질 때 X 데이터의 값이 이 범위로 truncation이 일어남. .
    • 기본적으로 X 데이터의 최소값과 최대값으로 설정됨.
  8. origin (str, default=None):
    • 이미지의 원점을 설정.
    • 'upper'는 이미지의 왼쪽 상단이 원점
    • 'lower'는 왼쪽 하단이 원점.
  9. extent (list, default=None):
    • 데이터 축의 좌표 범위를 지정.
    • [left, right, bottom, top]의 순서로 리스트로 입력
    • 이미지가 해당 좌표 범위에 맞게 조정됨.
  10. filternorm (bool, default=True):
    • 이미지 필터링을 할 때, 정규화를 적용할지 여부를 결정.
  11. filterrad (float, default=4.0):
    • 필터의 반경을 설정.
    • 필터를 사용하여 이미지 데이터를 보간할 때 적용.
  12. resample (bool, default=None):
    • True로 설정하면 이미지 리샘플링을 강제로 수행.
    • 리샘플링이란 이미지 크기 조정 시 발생하는 픽셀 데이터 변경을 의미함.

https://dsaint31.me/mkdocs_site/DIP/cv2/ch00/dip_0_00/#1-3-matplotlib-image

 

BME228

1. OpenCV를 통한 Image 다루기 (읽고 쓰기) 기본적으로 cv2를 이용하여 이미지를 읽어들이고, 저장하는 방법을 다룬다. 구체적인 함수는 다음과 같다. cv2.imread cv2.imshow cv2.imwrite 추가적으로 다루는 함

dsaint31.me

 


예제 코드

import sys
import os

# 현재 파일의 디렉토리 경로를 가져와서 sys.path에 추가 (모듈 경로 설정)
dir_path = os.path.dirname(__file__)
sys.path.append(dir_path)

# 필요한 라이브러리 임포트
import cv2
import numpy as np
import matplotlib.pyplot as plt
from cv_imread import ds_imread, ds_screen_size  # 사용자 정의 함수 (파일 읽기 및 화면 크기 관련)

# 이미지 파일 경로 설정 (cat_cv.tif 파일을 현재 디렉토리에서 읽어옴)
f_str = os.path.join(dir_path, 'cat_cv.tif')
# f_str = os.path.join(dir_path, 'opencv_logo.png')  # 다른 이미지 파일 경로 (필요시 사용)

# 사용자 정의 함수 ds_imread를 사용해 이미지 읽기, 원본 형식(변환 없음)으로 로드
img = ds_imread(f_str, cv2.IMREAD_UNCHANGED)

# OpenCV 이미지 데이터를 Matplotlib에서 사용할 수 있도록 변환
if len(img.shape) == 3:  # 이미지가 3채널 이상인 경우 (컬러 이미지)
    if img.shape[2] > 3:  # 이미지에 4채널(알파 채널)이 포함된 경우 (BGRA 형식)
        cv2.cvtColor(img, cv2.COLOR_BGRA2RGBA)  # BGRA를 RGBA로 변환
    else:
        img = img[..., ::-1]  # BGR을 RGB로 변환 (채널 순서 변경)

# img = plt.imread(f_str)

# Matplotlib에서 이미지 표시를 위한 figure 및 subplot 생성
fig, ax = plt.subplots()

# 이미지를 subplot에 표시
im = ax.imshow(img)

# 컬러바(colorbar) 생성 및 설정 (이미지의 색상 범위를 나타내는 바)
cbar = fig.colorbar(im, ax=ax)
cbar.set_ticks(np.arange(0, 256, 255))  # 컬러바의 눈금 설정 (0부터 255까지)
cbar.set_ticklabels(np.arange(0, 256, 255))  # 컬러바의 눈금 라벨 설정 (0과 255)

# x축과 y축 눈금을 제거 (이미지 좌표 눈금이 표시되지 않도록)
ax.set_xticks([])
ax.set_yticks([])

# 제목 설정 (타이틀을 'alpha channel'로 설정)
ax.set_title('alpha channel')

# Matplotlib 창에 이미지 표시
plt.show()

코드 설명:

  1. sys.path.append(dir_path):
    • 현재 파일의 디렉토리를 sys.path에 추가하여 모듈을 가져올 수 있도록 경로를 설정.
    • cv_imread와 같은 사용자 정의 모듈을 불러오는 데 사용됨.
  2. 이미지 파일 경로 설정:
    • cat_cv.tif 파일을 불러옴.
    • 필요에 따라 opencv_logo.png 파일로 변경할 수 있음.
  3. ds_imread(f_str, cv2.IMREAD_UNCHANGED):
    • cv_imread 모듈에 있는 ds_imread 함수를 사용해 이미지 로드.
    • cv2.IMREAD_UNCHANGED는 이미지 파일을 원본 그대로 불러오는 옵션임.
  4. OpenCV에서 Matplotlib로 이미지 변환:
    • OpenCV에서 이미지를 로드하면 BGR 형식으로 불러오지만, Matplotlib은 RGB 형식을 사용함.
    • 때문에 이미지가 알파 채널(BGRA)을 포함하고 있으면 이를 RGBA로 변환.
  5. plt.subplots():
    • Matplotlib에서 이미지를 그릴 수 있는 Figure와 Axes(서브플롯)을 생성.
  6. 이미지 표시 및 컬러바 설정:
    • ax.imshow(img)로 이미지를 표시
    • fig.colorbar()로 이미지의 컬러바를 추가.
    • 이 컬러바는 이미지의 색상 범위를 나타내며, 눈금은 0부터 255까지 설정.
  7. 눈금 제거 및 제목 설정:
    • ax.set_xticks([])와 ax.set_yticks([])로 축 눈금을 제거
    • 이미지의 제목을 "alpha channel"로 설정합니다.
  8. 이미지 표시:
    • plt.show()를 호출하여 Matplotlib 창에 이미지를 표시.

같이 보면 좋은 URLs

https://dsaint31.me/mkdocs_site/DIP/cv2/ch00/dip_0_00/

 

BME228

1. OpenCV를 통한 Image 다루기 (읽고 쓰기) 기본적으로 cv2를 이용하여 이미지를 읽어들이고, 저장하는 방법을 다룬다. 구체적인 함수는 다음과 같다. cv2.imread cv2.imshow cv2.imwrite 추가적으로 다루는 함

dsaint31.me

 

https://ds31x.tistory.com/314

 

[matplotlib] Summary : 작성중

Introduction2024.03.04 - [Python/matplotlib] - [matplotlib] matplotlib란 [matplotlib] matplotlib란Matplotlib은 Python에서 가장 널리 사용되는 Data Visualization Library임. matplotlib를 통해 chart(차트), image(이미지) 및, 다양한 vi

ds31x.tistory.com

 

https://dsaint31.tistory.com/653

 

[DIP] functional plot and image plot.

functional plot and image plot.Functional plot $f(x,y)$라는  function으로 image를 모델링할 수 있음.2개의 독립변수 $x,y$의 함수로 볼 경우, 3D graphics로 그릴 수 있음.2개의 독립변수에 의해  intensity 또는 brig

dsaint31.tistory.com

 

 


'Programming > DIP' 카테고리의 다른 글

[DIP] alpha 채널과 검은색 글씨 처리 with convertScaleAbs  (0) 2024.09.16
[CV] cv2.imread()  (4) 2024.09.16
[DIP] cv2.imshow 사용예  (2) 2024.09.16
[OpenCV] VideoCapture 사용법.  (0) 2024.09.11
[OpenCV] API Backend for VideoCapture  (0) 2024.09.11
'Programming/DIP' 카테고리의 다른 글
  • [DIP] alpha 채널과 검은색 글씨 처리 with convertScaleAbs
  • [CV] cv2.imread()
  • [DIP] cv2.imshow 사용예
  • [OpenCV] VideoCapture 사용법.
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (739)
      • Private Life (13)
      • Programming (56)
        • DIP (104)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (350)
        • Signals and Systems (103)
        • Math (171)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    random
    Term
    function
    SS
    signals_and_systems
    Vector
    math
    signal_and_system
    Programming
    linear algebra
    Optimization
    인허가제도
    fourier transform
    Convolution
    SIGNAL
    검사
    Probability
    opencv
    numpy
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[DIP] plt.imshow: matplotlib.pyplot
상단으로

티스토리툴바