簡體   English   中英

將圖像16位灰度轉換為位圖16位灰度(構造函數錯誤)

[英]Convert Image 16bits grayscale to Bitmap 16bits grayscale (Constructor error)

我嘗試將圖像(16位灰度)轉換為位圖(16位灰度)。

本示例不起作用(Exception:ArgumentException)

    private Mat ToMat16bGrayscale(Image im)
    {

        Bitmap bmp2 = new Bitmap(im); 

    }

但是這個例子有效:

 private Mat ToMat16bGrayscale(Image im)
 {

   //Cast obligatoire la création ou la copie d'une bitmap ne   fonctionne pas ici... 
                Bitmap bmp = (Bitmap)(im);
                Bitmap new_bmp = (Bitmap)bmp.Clone(); 
 }

我想知道為什么構造函數Bitmap不能與Image 16bits灰度一起使用,以及為什么將Image轉換為Bitmap可以工作。

謝謝 :)

PixelFormat.Format16bppGrayscale是一種白象圖像格式。 您可以在機器中找到的那種商品硬件,甚至不能接近准確地渲染這樣的位圖。 它基於RGB,每個顏色通道有8位,產生1600萬種不同的顏色。 其中只有256種是灰色陰影。 更糟糕的是商用LCD顯示器,它們通常不能做得比使6位色彩信息明顯不同要好得多,實際上只能渲染不超過64種陰影。 將65,536種灰度映射到256或64,當然會導致丟失很多細節。

確實在非常專業的應用程序中使用了它。 一種是放射成像,例如顯示X射線圖像。 但是他們也有非常昂貴的監視器來顯示這樣的圖像。 至關重要的電氣組件是D / A轉換器,它是一種可以在約250 MHz的頻率下運行的16位轉換器,成本不菲。 它們還使用特殊的圖像文件格式,DICOM是常見的,GDI +附帶的編解碼器不支持其他格式。

這里有很大的責任,在美國總是一個問題,當您在商品硬件上顯示這樣的醫學圖像時,無論看誰,都將無法看到足夠的細節來正確診斷(例如正在發展的腫瘤)。 其本身足以阻止Microsoft支持將像素格式轉換為像素格式,因此他們不希望參與此類訴訟。

GDI +支持存儲此類圖像。 您可以使用Bitmap.LockBits()獲取像素數據。 足夠適合圖像處理應用程序。 但是,任何為此類圖像創建Graphics對象或在此類圖像上使用Graphics.DrawImage()的嘗試都會導致異常。 這就是Bitmap(Image)構造函數的作用。 尋找像LeadTools這樣的供應商來提供庫支持。

暫無
暫無

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

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