iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
AI Engineering

從 Pixel 到 AI:30 天影像辨識入門之路系列 第 3 篇

Day3 電腦眼中的皮膚病灶是什麼?從 Pixel 認識數位影像

  • 分享至 

  • xImage
  •  

上一篇我們準備好了 Google Colab,接下來終於可以開始接觸圖片了,當我們看到一張皮膚病灶照片時,可以直接看出它的顏色、形狀、大小,但對電腦來說,一張圖片其實是由大量的 Pixel(像素) 和數字所組成

所以在開始訓練 AI 之前,我們先來看看一張圖片在電腦眼中到底長什麼樣子呢?


一、什麼是 Pixel?

Pixel 中文叫做「像素」,是組成數位圖片的基本單位,我們平常看到的圖片看起來是一個完整的畫面,但如果把圖片一直放大,就會慢慢看到一格一格的小方塊,每一個小方塊,就是一個 Pixel

我們可以把它想成拼圖,是由很多很小的 Pixel 拼在一起,最後就形成了我們看到的圖片

例如一張圖片有:600 × 450 Pixel
代表這張圖片:

  • Width(寬度)有 600 個 Pixel
  • Height(高度)有 450 個 Pixel

所以整張圖片總共有:600 × 450 = 270,000 個 Pixel
也就是說,我們看到的一張小小照片,其實已經是由 27 萬個 Pixel 組成的。


二、Width、Height 和 Resolution 是什麼?

圖片最常看到的資訊之一,例如 600 × 450,前面的數字通常代表 Width(寬度),後面的數字代表 Height(高度),也就是:

  • Width = 600 px
  • Height = 450 px
    px 就是 Pixel 的縮寫

而我們常聽到的 Resolution(解析度),在數位圖片的情境中,常會用圖片的像素尺寸來描述,例如 600 × 450,通常 Pixel 數量越多,圖片能保留的細節也越多,但同時需要處理的資料量也會增加

這件事之所以重要,是因為如果我們把很大的圖片直接交給 AI,當圖片越大、Pixel 越多 就代表要處理的數字也越多,所以之後在 Image Preprocessing 時,常常會先把圖片 Resize 成固定大小


三、電腦看到的 Pixel 是什麼?

接下來就是最重要的地方,我們看到的是一張皮膚病灶圖片,但是電腦並不知道「這是一個病灶」,它看到的是很多數字,先用比較簡單的灰階圖片來理解,假設有一張只有 3 × 3 Pixel 的圖片
52 61 70
63 75 90
80 95 110

這其實就是一個3 × 3的數字矩陣,每一個數字代表一個 Pixel 的亮度,一般 8-bit 灰階圖片的數值會落在 0 ~ 255,其中:
0 = 黑色
255 = 白色

中間的數字則代表不同程度的灰色,所以,圖片其實可以用一堆數字表示,這也是為什麼電腦可以對圖片進行計算


四、那彩色圖片呢?

HAM10000 裡的皮膚病灶圖片是彩色圖片,所以情況會再多一層,彩色圖片通常會使用三個 Channel(通道):

  • R = 紅色
  • G = 綠色
  • B = 藍色

也就是我們常聽到的 RGB,所以一個 Pixel 不再只有一個數字,而是可以用三個數字表示,例如:[255, 0, 0],代表:R = 255、G = 0、B = 0,看起來就是紅色,透過不同數值的組合,就可以產生我們看到的各種顏色

至於 RGB 三個 Channel 到底是怎麼組成一張彩色圖片的,我們下一篇會實際把它們拆開來看


五、所以一張圖片其實是一個「多維陣列」

現在把前面的概念組合起來,假設我們有一張彩色圖片:Width = 600、Height = 450、Channel = 3

在程式裡,它可能會看到類似(450, 600, 3),這個東西通常稱為圖片的 Shape,所以我們眼中的「一張皮膚病灶照片」,到了電腦裡,其實比較接近 450 × 600 × 3 的數值資料


六、實際用Colab看一張圖片

資料集: https://www.kaggle.com/datasets/kmader/skin-cancer-mnist-ham10000

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
import os

# HAM10000 圖片資料夾
image_folder = "/kaggle/input/skin-cancer-mnist-ham10000/HAM10000_images_part_1"

# 找出所有 jpg 圖片
image_files = [
    file for file in os.listdir(image_folder)
    if file.endswith(".jpg")
]
# 取得第一張圖片
image_path = os.path.join(image_folder, image_files[0])
# 讀取圖片
img = Image.open(image_path)
# 將圖片轉成 NumPy Array
img_array = np.array(img)
# 顯示圖片
plt.imshow(img)
plt.axis("off")
plt.show()
# 顯示圖片資訊
print("圖片名稱:", image_files[0])
print("圖片尺寸 (Width, Height):", img.size)
print("圖片 Shape (Height, Width, Channel):", img_array.shape)
print("左上角 Pixel RGB:", img_array[0, 0])
print(img_array)

實際從 HAM10000 資料集中取出一張圖片後,可以看到這張圖片的尺寸為 600 × 450 Pixel,也就是 Width 有 600 個 Pixel、高度 Height 有 450 個 Pixel,整張圖片總共由 270,000 個 Pixel 組成

當我們將圖片轉換成 NumPy Array 後,可以看到它的 Shape 為 (450, 600, 3),分別代表 Height、Width、Channel,最後的 3 代表這是一張彩色圖片,每個 Pixel 都包含 R(Red)、G(Green)、B(Blue) 三個數值
例如圖片左上角第一個 Pixel 的 RGB 為 [214, 153, 152],代表 Red = 214、Green = 153、Blue = 152,三個數值組合後,就形成了我們看到的顏色

因此,我們眼中看到的是一張完整的皮膚病灶照片,但對電腦來說,這張圖片其實是一個 450 × 600 × 3 的數值陣列。他會從從這些 Pixel 的數值開始處理圖片,下一篇就會繼續看看,每個 Pixel 裡的 R、G、B 三個 Channel 到底代表什麼,以及它們是怎麼組合成一張彩色圖片的
https://ithelp.ithome.com.tw/upload/images/20260904/20169251AxIegd52b8.png


上一篇
Day2 Google Colab 是什麼?不用高階電腦也能開始玩 AI
下一篇
Day4 一張皮膚病灶圖片其實是三張圖?認識 RGB 與 Channel
系列文
從 Pixel 到 AI:30 天影像辨識入門之路 共 15 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言