
- Mahotas 教程
- Mahotas - 首頁
- Mahotas - 簡介
- Mahotas - 計算機視覺
- Mahotas - 歷史
- Mahotas - 特性
- Mahotas - 安裝
- Mahotas 影像處理
- Mahotas - 影像處理
- Mahotas - 載入影像
- Mahotas - 載入灰度影像
- Mahotas - 顯示影像
- Mahotas - 顯示影像形狀
- Mahotas - 儲存影像
- Mahotas - 影像質心
- Mahotas - 影像卷積
- Mahotas - 建立 RGB 影像
- Mahotas - 影像尤拉數
- Mahotas - 影像中零的比例
- Mahotas - 獲取影像矩
- Mahotas - 影像區域性最大值
- Mahotas - 影像橢圓軸
- Mahotas - RGB 影像拉伸
- Mahotas 顏色空間轉換
- Mahotas - 顏色空間轉換
- Mahotas - RGB 到灰度轉換
- Mahotas - RGB 到 LAB 轉換
- Mahotas - RGB 到 Sepia 轉換
- Mahotas - RGB 到 XYZ 轉換
- Mahotas - XYZ 到 LAB 轉換
- Mahotas - XYZ 到 RGB 顏色空間轉換
- Mahotas - 增加伽馬校正
- Mahotas - 拉伸伽馬校正
- Mahotas 標記影像函式
- Mahotas - 標記影像函式
- Mahotas - 標記影像
- Mahotas - 過濾區域
- Mahotas - 邊界畫素
- Mahotas - 形態學運算
- Mahotas - 形態學運算元
- Mahotas - 查詢影像平均值
- Mahotas - 裁剪影像
- Mahotas - 影像離心率
- Mahotas - 影像疊加
- Mahotas - 影像圓度
- Mahotas - 調整影像大小
- Mahotas - 影像直方圖
- Mahotas - 影像膨脹
- Mahotas - 影像腐蝕
- Mahotas - 分水嶺演算法
- Mahotas - 影像開運算
- Mahotas - 影像閉運算
- Mahotas - 填充影像孔洞
- Mahotas - 條件膨脹影像
- Mahotas - 條件腐蝕影像
- Mahotas - 影像條件分水嶺演算法
- Mahotas - 影像區域性最小值
- Mahotas - 影像區域最大值
- Mahotas - 影像區域最小值
- Mahotas - 高階概念
- Mahotas - 影像閾值化
- Mahotas - 設定閾值
- Mahotas - 軟閾值
- Mahotas - Bernsen 區域性閾值化
- Mahotas - 小波變換
- 建立小波中心影像
- Mahotas - 距離變換
- Mahotas - 多邊形工具
- Mahotas - 區域性二值模式
- 閾值鄰域統計
- Mahotas - Haralick 特徵
- 標記區域權重
- Mahotas - Zernike 特徵
- Mahotas - Zernike 矩
- Mahotas - 排序濾波器
- Mahotas - 二維拉普拉斯濾波器
- Mahotas - 多數濾波器
- Mahotas - 均值濾波器
- Mahotas - 中值濾波器
- Mahotas - Otsu 方法
- Mahotas - 高斯濾波
- Mahotas - Hit & Miss 變換
- Mahotas - 標記最大值陣列
- Mahotas - 影像平均值
- Mahotas - SURF 密集點
- Mahotas - SURF 積分影像
- Mahotas - Haar 變換
- 突出顯示影像最大值
- 計算線性二值模式
- 獲取標籤邊界
- 反轉 Haar 變換
- Riddler-Calvard 方法
- 標記區域大小
- Mahotas - 模板匹配
- 加速魯棒特徵
- 去除邊界標記
- Mahotas - Daubechies 小波
- Mahotas - Sobel 邊緣檢測
Mahotas - XYZ 到 RGB 顏色空間轉換
在上一個教程中,我們學習了 XYZ 顏色空間、RGB 顏色空間以及 RGB 到 XYZ 的轉換。現在讓我們討論一下 XYZ 顏色空間到 RGB 顏色空間的轉換。
當我們將 XYZ 轉換為 RGB 時,我們採用顏色的 XYZ 值(表示其感知特性),並將它們轉換為紅色、綠色和藍色值。
這種轉換允許我們將顏色表示為適合在特定裝置或螢幕上顯示的格式。
Mahotas 中的 XYZ 到 RGB 轉換
在 Mahotas 中,我們可以使用 **colors.xyz2rgb()** 函式將 XYZ 影像轉換為 RGB 影像。
Mahotas 中的 XYZ 到 RGB 轉換涉及以下步驟:
**歸一化 XYZ 值** - 歸一化 X、Y 和 Z 值,使其範圍在 0 到 1 之間。此步驟確保 XYZ 值相對於參考白點,並允許進行一致的顏色計算。
**將歸一化的 XYZ 轉換為線性 RGB** - 接下來,使用轉換矩陣將歸一化的 XYZ 值轉換為線性 RGB 值。轉換矩陣指定 XYZ 座標如何影響結果顏色的紅色、綠色和藍色分量。
進行矩陣乘法運算以獲得線性 RGB 值。
**應用伽馬校正** - 伽馬校正調整 RGB 值的亮度,以匹配人類視覺系統的響應。
**縮放 RGB 值** - 伽馬校正後,RGB 值通常在 0 到 1 的範圍內。為了在 8 位範圍內 (0-255) 表示顏色,需要縮放 RGB 值。
將每個伽馬校正後的 RGB 值乘以 255 以將其縮放至適當的範圍。
**結果** - 應用縮放後,即可獲得 RGB 顏色值。這些值表示結果顏色的紅色、綠色和藍色通道的強度。
使用 mahotas.colors.xyz2rgb() 函式
mahotas.colors.xyz2rgb() 函式接收 XYZ 影像作為輸入,並返回影像的 RGB 顏色空間版本。
生成的 RGB 影像保留了原始 XYZ 影像的結構和內容,但是會丟失一些顏色細節。
語法
以下是 mahotas 中 xyz2rgb() 函式的基本語法:
mahotas.colors.xyz2rgb(xyz, dtype={float})
其中:
**xyz** - 它是 XYZ 顏色空間中的輸入影像。
**dtype (可選)** - 它是返回影像的資料型別(預設為浮點數)。
示例
在下面的示例中,我們使用 mh.colors.xyz2rgb() 函式將 XYZ 影像轉換為 RGB 影像:
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # Loading the image image = mh.imread('nature.jpeg') # Converting it to XYZ xyz_image = mh.colors.rgb2xyz(image) # Converting back to RGB (lossy) rgb_image = mh.colors.xyz2rgb(xyz_image) # Creating a figure and axes for subplots fig, axes = mtplt.subplots(1, 2) # Displaying the original XYZ image axes[0].imshow(xyz_image) axes[0].set_title('XYZ Image') axes[0].set_axis_off() # Displaying the RGB image axes[1].imshow(rgb_image) axes[1].set_title('RGB Image') axes[1].set_axis_off() # Adjusting spacing between subplots mtplt.tight_layout() # Showing the figures mtplt.show()
輸出
以下是上述程式碼的輸出:

使用轉換矩陣
我們可以使用轉換矩陣將 XYZ 影像轉換為 RGB 影像。轉換矩陣具有一組用於將 XYZ 畫素轉換為 RGB 畫素的值。
- 透過進行轉換矩陣與 XYZ 影像之間的矩陣乘法,將 XYZ 畫素轉換為 RGB 畫素。
- 我們透過使用 numpy 庫中的 dot() 函式來實現這一點。
- 然後,透過將每個畫素的值乘以 255,再除以該畫素的最大強度,將每個畫素的值從 0 到 1 的範圍(XYZ 顏色的強度範圍)歸一化到 0 到 255 的範圍(RGB 顏色的強度範圍),以獲得 RGB 影像。
示例
以下示例顯示了使用轉換矩陣將 XYZ 影像轉換為 RGB 影像:
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # Function to convert XYZ to RGB def xyz_to_rgb(xyz_image): # XYZ to RGB conversion matrix xyz_to_rgb_matrix = np.array([[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415],[0.0557, -0.2040, 1.0570]]) # Perform the XYZ to RGB conversion using matrix multiplication rgb_image = np.dot(xyz_image, xyz_to_rgb_matrix.T) # Scale the RGB values from the range [0, 1] to [0, 255] rgb_image = (rgb_image * 255.0 / np.max(rgb_image)).astype(np.uint8) return rgb_image # Loading the image image = mh.imread('tree.tiff') # Converting it to XYZ xyz_image = mh.colors.rgb2xyz(image) # Converting back to RGB (lossy) rgb_image = xyz_to_rgb(xyz_image) # Creating a figure and axes for subplots fig, axes = mtplt.subplots(1, 2) # Displaying the original XYZ image axes[0].imshow(xyz_image) axes[0].set_title('XYZ Image') axes[0].set_axis_off() # Displaying the RGB image axes[1].imshow(rgb_image) axes[1].set_title('RGB Image') axes[1].set_axis_off() # Adjusting spacing between subplots mtplt.tight_layout() # Showing the figures mtplt.show()
輸出
上述程式碼的輸出如下:
