簡體   English   中英

16 位灰度圖像到熱圖

[英]16bit greyscale image to heatmap

我正在為我的大學開發科學成像軟件,但遇到了一個大問題。 我實驗室的科學相機 (Apogee Alta U57) 以 16bpp 陣列的形式提供圖像 - 每像素 0-65535 值! 我們想保持這個范圍,但實際上我們無法在監視器上顯示它們(0-255 灰度范圍)。 所以我找到了解決這個問題的方法——簡單地利用顏色,並將整個圖像顯示為熱圖(從黑色、藍色、綠色和紅色到純白色)。

我的意思是這樣的 - 我想要實現的示例熱圖圖像在此處輸入圖片說明

我唯一的問題是:如何在 c# 中有效地將 16bpp 像素值數組轉換為完整的熱圖位圖? 有沒有圖書館可以做到這一點? 如果沒有,我如何使用 .NET 資源實現這一目標?

我的想法是創建將 65536 個值映射到 (255 R, 255G, 255B) 的函數,但這是一項艱巨的工作——尤其是在不使用 HSV 模型的情況下。

我將非常感謝提供的任何幫助!

你的問題由幾個部分組成:

  • 讀入 16 位像素數據值
  • 將它們映射到 24 位 rgb 顏色
  • 將它們寫入圖像文件

我將跳過第一和第三部分,給你一些關於第二部分的想法。

事實上,它比看起來更難。 一個不會丟失任何信息的獨特映射很簡單,實際上微不足道,只需稍微移動就可以了。

但是您還希望結果在視覺上起作用,這意味着不是應該在視覺上吸引人而是應該對人眼有意義。 所以我們需要一個具有可信但足夠大的梯度的映射。

為此,您應該嘗試一下。 我建議使用 LinearGradientBrush,正如我在這里展示的那樣。 看看interpolateColors函數! 它在示例中僅使用 6 種顏色,對於您的情況來說很少!

你應該選擇更多; 您可能需要以螺旋形式穿過色彩空間。

你的訣竅是選擇漂亮和足夠的停止顏色來創建 64k 大組獨特的顏色,最好從藍色到紅色。

您需要測試結果的唯一性; 事實上,您可能希望為映射創建一對 Dictionary 和 Dictionary。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM