你能告訴我如何讀取C#中的所有dicom標籤及其VR嗎?在c中讀取dicom文件標籤#
-1
A
回答
1
1
這是當然的,完全取決於什麼DICOM你正在使用的庫。
使用ClearCanvas你有這樣的事情:
public foo(DicomFile dfile)
{
DicomAttributeCollection dac;
dac = dfile.DataSet;
DicomUid uid;
bool success;
success = dac[DicomTags.SopInstanceUid].TryGetUid(0, out uid);
if (success)
{
// The attribute was present in the collection. The variable uid
// contains the SopInstanceUid extracted from the DICOM file
}
}
與不同VR的其他屬性將使用DicomTags的相應字段中提取,並在VR適當的getter函數。例如,如果您想要將EchoTime(具有DS值表示的屬性)提取爲double,則可以使用TryGetFloat64而不是TryGetUid。 TryGetFloat64(和其他類似函數)的第一個整數參數指示您想要獲取的特定值。對於數值爲1的屬性,此參數始終爲0.對於VM> 1的屬性,通過將參數設置爲n-1,可以提取第n個值。
1
如果您正在使用GDCM + C#綁定:
http://gdcm.sourceforge.net/html/SimplePrint_8cs-example.html
public class SimplePrint
{
public static void RecurseDataSet(File f, DataSet ds, string indent)
{
CSharpDataSet cds = new CSharpDataSet(ds);
while(!cds.IsAtEnd())
{
DataElement de = cds.GetCurrent();
// Compute VR from the toplevel file, and the currently processed dataset:
VR vr = DataSetHelper.ComputeVR(f, ds, de.GetTag());
if(vr.Compatible(new VR(VR.VRType.SQ)))
{
uint uvl = (uint)de.GetVL(); // Test cast is ok
System.Console.WriteLine(indent + de.GetTag().toString() + ":" + uvl); // why not ?
//SequenceOfItems sq = de.GetSequenceOfItems();
// GetValueAsSQ handle more cases than GetSequenceOfItems
SmartPtrSQ sq = de.GetValueAsSQ();
uint n = sq.GetNumberOfItems();
for(uint i = 1; i <= n; i++) // item starts at 1, not 0
{
Item item = sq.GetItem(i);
DataSet nested = item.GetNestedDataSet();
RecurseDataSet(f, nested, indent + " ");
}
}
else
{
System.Console.WriteLine(indent + de.toString());
}
cds.Next();
}
}
public static int Main(string[] args)
{
string filename = args[0];
Reader reader = new Reader();
reader.SetFileName(filename);
bool ret = reader.Read();
if(!ret)
{
return 1;
}
File f = reader.GetFile();
DataSet ds = f.GetDataSet();
RecurseDataSet(f, ds, "");
return 0;
}
}
1
在Evil Dicom它是很容易:
//All the work is done with this constructor
DicomFile df = new DicomFile("fileToRead.dcm");
foreach (DicomObject d in df.DicomObjects)
{
Console.WriteLine(string.Format("I have a tag id of {0}, a VR of {1}", d.Tag.Id, d.VR));
}
//To access the data in a native format use .Data property
string name = df.PATIENT_NAME.Data;
1
我使用LEADTOOLS
private DicomDataSet _objLTDicomDataSet = null;
private void OpenDataset(string file, bool loadDefaultImage)
{
_objLTDicomDataSet =new DicomDataSet();
_objLTDicomDataSet.Load(file, DicomDataSetLoadFlags.None);
DicomElement element, _ele = null;
element = _objLTDicomDataSet.FindFirstElement(null, DicomTag.PatientName, true);
string tagName = _objLTDicomDataSet.GetStringValue(element, 0);
}
實現它
也LEADTOOLS支持獲取各種標籤的各種方法,你可以使用的方法和讀取DICOM文件的方法如下
DicomDataSet.GetRootElement
DicomDataSet.GetParentElement
DicomDataSet.GetChildElement
DicomDataSet.GetFirstElement
DicomDataSet.GetLastElement
DicomDataSet.GetPreviousElement
DicomDataSet.GetNextElement
更多信息LeadTools網站
+0
感謝您的幫助:)) – 2013-07-26 10:07:02
相關問題
- 1. GDCM庫無法讀取C#DICOM文件
- 2. 在C中讀取標籤
- 3. 如何在matlab中讀取多個dicom文件的標題?
- 4. 如何使用fo-dicom從序列中讀取嵌套/子DICOM標籤?
- 5. 如何在C#中使用openDicom.net讀取dicom標記值?
- 6. 在Dicom文件中讀取中文字符
- 7. 從C#中的DICOM文件讀取並顯示標題和圖像
- 8. 如何讀取壓縮的DICOM文件
- 9. 在C++中讀取文件標籤/屬性
- 10. 在asp.net中用c#讀取mp3文件的id3標籤#
- 11. 在C#中讀取Excel文件時查找標籤列寬度
- 12. 在C中讀取TIFF文件標題#
- 13. 閱讀標籤在c + + delimeted文件
- 14. 從PHP文件中讀取Meta標籤
- 15. 閱讀DICOM文件格式
- 16. 如何使用ITK讀取另一個標籤內的DICOM標籤?
- 17. 在C中讀取文件讀取#
- 18. XML解析器從Word文件中讀取xml標籤C#
- 19. 如何讀取C(unix)中的mp3文件標籤?
- 20. 如何通過Android中的標籤讀取XML文件標籤?
- 21. 在C中讀取文件
- 22. 在文件中讀取C++
- 23. 在C中讀取文件
- 24. 在C++中讀取文件
- 25. 從.nii格式轉換後,無法在C++ ITK中讀取DICOM文件
- 26. 使用C#讀取DICOM圖像
- 27. SciPy:在.wav文件中讀取標記時間和標籤
- 28. 使用C#中DICOM文件中的ClearCanvas閱讀出現錯誤以及如何顯示DICOM VCR標記
- 29. 在cmd文件中讀取html並獲取img標籤
- 30. C#讀取html標籤中的數據
這個問題也關係:HTTP://計算器.com/questions/2381983/c-how-to-read-parts-of-file-dicom – 2011-02-10 17:32:17