【转】DICOM图像像素值、灰度值与CT值!!!!!
轉自:https://blog.csdn.net/syz201558503103/article/details/107238940
做醫學圖像處理會涉及DICOM圖像,初學者應該要對圖像像素有一定了解,在對像素處理中會一些算法會利用的更好。
圖像灰度值的概念是什么?灰度也可以認為是亮度,簡單說就是色彩的深淺程度。
????實際上在我們的日常生活中,通過三原色色彩深淺的組合,可以組成各種不同的顏色。產品能夠展現的灰度數量越多,也就意味著這款產品的色彩表現力更加豐富,能夠實現更強的色彩層次。例如三原色16級灰度,能顯示的顏色就是16×16×16=4096色。不過目前的產品256級灰度已經非常地普遍了。
所謂顏色或灰度級指黑白顯示器中顯示像素點的亮暗差別,在彩色顯示器中表現為顏色的不同,灰度級越多,圖像層次越清楚逼真。灰度級取決于每個像素對應的刷新存儲單元的位數和顯示器本身的性能。如每個象素的顏色用16位二進制數表示,我們就叫它16位圖,它可以表達2的16次方即65536種顏色。如每一個象素采用24位二進制數表示,我們就叫它24位圖,它可以表達2的24次方即16777216種顏色。
??????灰度就是沒有色彩,RGB色彩分量全部相等。如果是一個二值灰度圖象,它的象素值只能為0或1,我們說它的灰度級為2。用個例子來說明吧:一個256級灰度的圖象,RGB(100,100,100)就代表灰度為100,RGB(50,50,50)代表灰度為50。
??????灰度是指黑白圖像中點的顏色深度,范圍一般從0到255,白色為255 ,黑色為0,故黑白圖片也稱灰度圖像,在醫學、圖像識別領域有很廣泛的用途
??? 彩色圖象的灰度其實在轉化為黑白圖像后的像素值(是一種廣義的提法),轉化的方法看應用的領域而定,一般按加權的方法轉換,R , G ,B 的比一般為3:6:1。
???????任何顏色都有紅、綠、藍三原色組成,假如原來某點的顏色為RGB(R,G,B),那么,我們可以通過下面幾種方法,將其轉換為灰度:
????1.浮點算法:Gray=R*0.3+G*0.59+B*0.11
????2.整數方法:Gray=(R*30+G*59+B*11)/100
????3.移位方法:Gray =(R*28+G*151+B*77)>>8;
????4.平均值法:Gray=(R+G+B)/3;
?????5.僅取綠色:Gray=G;
???通過上述任一種方法求得Gray后,將原來的RGB(R,G,B)中的R,G,B統一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來的RGB(R,G,B)就是灰度圖了。
灰度值與像素值的關系
 ??????記錄了明亮(暗與亮,黑與白)度信息的2D圖像成為亮度(灰度)圖像。如果對于一張本身就是灰度圖像(8位灰度圖像)來說,他的像素值就是它的灰度值,如果是一張彩色圖像,則它的灰度值需要經過函數映射來得到。灰度圖像是由純黑和純白來過渡得到的,在黑色中加入白色就得到灰色,純黑和純白按不同的比例來混合就得到不同的灰度值。
????像素中具有RGB三通道的彩色圖像來說怎樣才能得到灰度圖像呢?只要使R=G=B,三者的值相等就可以得到灰度圖像。R=G=B=255為白色,R=G=B=0為黑色,R=G=B=小于255的某個整數時,此時就為某個灰度值。
像素值(灰度值)轉換為CT值
 ????CT值的單位是Hounsfield,簡稱為Hu,范圍是-1024-3071。用于衡量人體組織對X射線的吸收率,設定水的吸收率為0Hu。
在DICOM圖像讀取的過程中,我們會發現圖像的像素值有可能不是這個范圍,通常是0-4096,這是我們常見到的像素值或者灰度值,這就需要我們在圖像像素值(灰度值)轉換為CT值。
首先,需要讀取兩個DICOM Tag信息,(0028|1052):rescale intercept和(0028|1053):rescale slope.
然后通過公式:
Hu = pixel * slope + intercept
計算得到CT值。
獲得三維值:
 ?
PathDicom = "./PATIENT_DICOM5/" # 與python文件同一個目錄下的文件夾
lstFilesDCM = []
slices = []
number = 0
name = 0
for dirName, subdirList, fileList in os.walk(PathDicom):
for filename in fileList:
lstFilesDCM.append(os.path.join(dirName, filename))
number += 1
RefDs = pydicom.read_file(lstFilesDCM[0])
ConstPixelSpacing = (float(RefDs.PixelSpacing[0]), float(RefDs.PixelSpacing[1]), float(RefDs.SliceThickness))
print(ConstPixelSpacing)
?
總結
以上是生活随笔為你收集整理的【转】DICOM图像像素值、灰度值与CT值!!!!!的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 字节跳动自研芯片:广招SoC设计人才
 - 下一篇: 高通最强Soc骁龙8+跑分曝光:多核成绩