UID,全稱為Unique Identifiers,用於區別各項事務,確保在多國家、地區、供應商,以及設備間的唯一性。
雖然UID的目的只有一個區別各項事務,確保唯一性。但是由於各自代表的領域不同、服務的對象不同、具體使用的場景不同,開源庫在具體實現時會對UID進行分類,用於標記區分各事務。下面以fo-dicom中DicomUID為例進行講解:
在DicomUID類中,定義了DicomUidType枚舉類型,
1 public enum DicomUidType { 2 TransferSyntax, 3 SOPClass, 4 MetaSOPClass, 5 SOPInstance, 6 ApplicationContextName, 7 CodingScheme, 8 FrameOfReference, 9 LDAP, 10 Unknown 11 }
DICOM協議中的UID大致分成9類
1)TransferSyntax,該類UID就是我們之前提到的用於標識客戶端與服務端之間消息流傳輸的各種編碼格式。
2)SOPClass ,即常見的服務對象對類型,Service-Object-Pairs Class。主要用於標記各種服務,例如DIMSE-C服務、DIMSE-N服務。
3)MetaSOPClass,是一系列SOP Class的集合,具體參見Meta SOP Class Definitions,Meta SOP Class中最常見的就是兩種具體打印服務,即Basic Grayscale Print Management Meta SOP Class和Basic Color Print Management Meta SOP Class。如下圖所示:
4)SOPInstance,用於描述現實場景中具體的“實例”,可以脫離於交互上下文、交互環境(Communication Context)而存在,例如后綴為.dcm的醫學圖像文件等等。
5)ApplicationContextName,該UID是DICOM專屬的,用於標識DICOM應用,因此ApplicationContextName類中有且只有一個對象,即
public static DicomUID DICOMApplicationContextName = new DicomUID("1.2.840.10008.3.1.1.1" , "DICOM Application Context Name", DicomUidType.ApplicationContextName);
6)CodingScheme,DICOM協議中的編碼方案,可以簡單的理解為DICOM協議中各種符號含義的約定,具體可參見DICOM3.0第16部分附錄D
7)FrameOfReference,用於定位的坐標系,該坐標系是已經公開的、約定俗成的,例如腦圖譜中著名的Talairach Brain Atlas Frame of Reference,具體可查閱Wiki百科,如下圖所示:
關於FrameOfReference還可閱讀國外文獻資料,例如The MNI brain and the Talairach atlas和Bias Between MNI and Talairach Coordinates Analyzed Using the ICBM-I5 Brain Template。
8)LDAP,Lightweight Directory Access Protocol,中文稱之為“輕型目錄訪問協議”。具體可搜索資料,我也是一知半解。
9)UnKnown,其他預留擴展使用,或用戶自定義。
普通JPG圖像的UID:1.2.840.10008.1.2.4.50