파이썬 Matplotlib를 활용한 이미지 처리 마스터하기: 포괄적인 가이드
Published on
데이터 과학 분야에서 데이터 시각화의 중요성은 무궁무진합니다. 파이썬 생태계에서 이러한 강력한 도구 중 하나는 Matplotlib 입니다. 이 라이브러리는 Python에서 정적, 애니메이션 및 상호 작용적 시각화를 만들기위한 다재다능한 도구입니다. 그러나 Matplotlib이 이미지 처리에 대한 강력한 도구가 될 수 있다는 것을 알고 계셨나요?
당신은 "이미지 처리란 무엇입니까?" 라고 물을 수 있습니다. 이것은 이미지를 분석, 수정 및 해석하는 것과 같은 이미지에 대한 작업 수행 방법입니다. 이러한 작업들은 일반적으로 Python에서 숫자 데이터를 저장하고 조작하는 데 사용되는 기본적인 데이터 구조 인 NumPy 배열을 사용합니다.
Python Pandas Dataframe으로부터 빠르게 데이터 시각화를 만들고 싶으신가요?
PyGWalker는 시각화를 통한 탐색적 데이터 분석을 위한 Python 라이브러리입니다. PyGWalker (opens in a new tab)는 pandas dataframe (그리고 polars dataframe)를 Tableau 스타일의 사용자 인터페이스로 변환하여 시각적 탐색을 단순화하는데 도움이됩니다.
Matplotlib: 이미지의 마술을 드러내다
그 핵심으로서, 이미지는 각 픽셀이 특정 배열 요소에 해당하는 다차원 NumPy 배열에 불과합니다. 이들 픽셀은 숫자 값 (일반적으로 그레이스케일 이미지의 경우 0(검정색)에서 255(흰색)까지)을 가집니다. 반면, 컬러 이미지 또는 RGB 이미지는 빨간색, 초록색 및 파란색 채널에 해당하는 세 가지 이러한 배열이 있습니다. 더 나아가 RGBA 형식은 투명도를 위한 추가적인 알파 채널을 포함합니다.
이러한 이미지와 함께 작업할 때 Matplotlib의 마법이 실제로 두드러집니다. 이러한 NumPy 배열을 조작함으로써 다양한 이미지 처리 작업을 수행 할 수 있습니다. 예를 들어 RGB 이미지를 그레이스케일 이미지로 변환하려는 경우, 각 픽셀의 빨간색, 녹색 및 파란색 채널의 값의 평균을 계산하는 것이 필요합니다. 복잡하게 들리나요? Matplotlib에서는 매우 간단합니다! 다음 링크를 참조하세요. ChatGPT Code Interpreter로 데이터 사이언스하기.
이미지 시각화하기
Matplotlib을 사용하여 이미지 데이터를 그리는 것은 엄청난 장점입니다. 이미지를 표시하는 데 사용되는 많은 함수 컬렉션이 제공되며, 히스토그램 도표를 만들고 심지어 이미지 세분화를 생성할 수 있습니다. 더욱이, 이러한 플롯을 다양한 방식으로 사용자 정의 할 수 있습니다.
그 중 하나는 색상 척도 입니다. 색상 척도는 색 조절을 위한 그래프적인 표현 방법입니다. Matplotlib에서 색상 척도를 조정하여 서로 다른 기능을 더 잘 나타낼 수 있습니다. 예를 들어, 이미지의 특정 영역을 강조하거나 대비를 높일 수 있습니다.
색상 척도는 RGB 이미지에서 매우 중요합니다. 각 픽셀은 세 가지 강도 값 (빨강, 녹색, 파랑)로 표시됩니다. 따라서 3D NumPy 배열로 나타내어집니다.
# 무작위 RGB 이미지 만들기
image_rgb = np.random.randint(0, 256, (512, 512, 3), dtype=np.uint8)
# RGB 이미지 표시
plt.imshow(image_rgb)
plt.show()
이미지에서 작업 수행하기
Matplotlib은 이러한 이미지에 대한 작업을 수행하기 위한 다양한 기능을 제공합니다.
예를 들어, 이미지 수정은 픽셀 강도 값을 조정하는 것만으로도 간단할 수 있습니다.
# 모든 픽셀의 강도를 50 증가시키기
image_mod = image + 50
# 수정된 이미지 표시
plt.imshow(image_mod, cmap ='gray')
plt.show()
또한 이미지 자르기, 이미지 확대/축소, 이미지 회전과 같은 작업도 수행할 수 있습니다.
# 이미지를 256x256으로 자르기
image_crop = image[:256, :256]
# 자른 이미지 표시
plt.imshow(image_crop, cmap='gray')
plt.show()
Matplotlib를 사용한 이미지 시각화
단순한 이미지 표시 이상으로, Matplotlib는 이미지 시각화를 위한 포괄적인 도구를 제공합니다. 히스토그램 플롯을 그리고, 색상 척도를 적용하고, 심지어 이미지 분할도 할 수 있습니다.
예를 들어, 이미지에서 픽셀 강도의 히스토그램을 그릴 수 있습니다.
# 픽셀 강도의 히스토그램 그리기
plt.hist(image.ravel(), bins=256, color='gray', alpha=0.7)
plt.show()
또한 축을 제거하고 이미지에 색상 척도를 추가할 수도 있습니다.
# 축이 없는 이미지에 색상 척도 표시
plt.imshow(image, cmap='gray')
plt.colorbar()
plt.axis('off')
plt.show()
이러한 기본 정보를 충분히 이해하면 이미지 필터링, 여러 이미지를 표시하는 방법 등 고급 주제에 쉽게 집중할 수 있습니다. Matplotlib가 RATH (opens in a new tab), Tableau, 및 Chartio와 같은 데이터 시각화 도구와 어떻게 통합되는지도 알아볼 가치가 있습니다.
고급 이미지 처리 기술
기초를 다지면 더 복잡한 이미지 처리 기술을 살펴볼 수 있습니다.
이미지 필터링은 이미지를 수정하거나 향상시키는 데 사용하는 방법입니다. 예를 들어, 이미지 필터링의 일반적인 응용 사례 중 하나는 이미지를 평활화하거나 블러링하는 것입니다. Matplotlib에서는 필터 커널(convolution)을 사용하여 이를 수행할 수 있습니다.
from scipy.ndimage import gaussian_filter
# 이미지 스무딩(smoothing)을 위한 가우시안 필터 적용
image_smooth = gaussian_filter(image, sigma=1)
# 필터링된 이미지 표시
plt.imshow(image_smooth, cmap='gray')
plt.show()
마찬가지로, 이미지 회전은 데이터 증강과 같은 작업에서 특히 중요한 작업입니다. 다행히도 Matplotlib를 사용하면 간단합니다.
from scipy.ndimage import rotate
# 이미지를 45도 회전시키기
image_rotated = rotate(image, angle=45)
# 회전된 이미지 보여주기
plt.imshow(image_rotated, cmap='gray')
plt.show()
또 다른 흥미로운 응용 프로그램은 이미지 분할로, 이미지를 여러 세그먼트 또는 '관심 영역'으로 분할하는 과정입니다. 이 기술은 물체 감지 또는 이미지 인식과 같은 작업에서 매우 유용합니다.
from skimage.segmentation import slic
from skimage.color import label2rgb
# SLIC 분할 적용
segments = slic(image_rgb)
# 분할 보여주기
segmented_image = label2rgb(segments, image_rgb, kind='avg')
plt.imshow(segmented_image)
plt.show()
마지막으로, 여러 이미지를 표시하면(서브플롯팅이라고도 함) 서로 다른 이미지 또는 이미지 처리 기술을 비교하는 좋은 방법이 됩니다. Matplotlib은 복잡한 서브플롯 레이아웃을 만들기 위한 매우 유연한 프레임워크를 제공합니다.
# 원본 및 필터링된 이미지를 옆에 표시
fig, axes = plt.subplots(1, 2)
axes[0].imshow(image, cmap='gray')
axes[1].imshow(image_smooth, cmap='gray')
plt.show()
마무리
Matplotlib과 Python을 사용한 이미지 처리의 세계는 방대하고 가능성이 가득합니다. 이미지 자르기와 크기 조정과 같은 기본 조작에서부터 이미지 분할과 같은 고급 기술까지, 이 라이브러리는 데이터 시각화와 이미지 처리 모두에 대한 폭넓은 도구 세트를 제공합니다.
기술을 더 향상시키려면 Snowflake, Clickhouse 및 AWS와 같은 다양한 데이터 시각화 플랫폼을 탐색해보십시오. 이러한 플랫폼은 Python과 Matplotlib과 통합되어 완전한 데이터 분석 및 시각화 워크플로를 제공합니다.
Matplotlib를 마스터하는 여정은 달리기가 아닌 마라톤이라는 것을 기억하십시오. 그러니 한 번에 하나씩 처리해 보세요!