256 isLitteEndian = true; 257 isExplicitVR = false; 258 break; 259 default: 260 break; 261 } 262 }
263 for (int i = 1; i <= leve; i++) 264 tag = \ + tag;
265 //------------------------------------数据搜集代码
266 if ((VR == \ && Len == UInt32.MaxValue) || (tag == \ && Len == UInt32.MaxValue) || leve > 0)//文件夹标签代码 267 {
268 folderData.AppendLine(tag + \ + VR + \:\ + VFStr);
269 }
270 else if (((tag == \ && Len ==
UInt32.MinValue) || (tag == \ && Len == UInt32.MinValue)) && leve == 0)//文件夹结束标签 271 {
272 folderData.AppendLine(tag + \ + VR + \:\ + VFStr);
273 tags.Add(folderTag + \, folderData.ToString()); 274 } 275 else
276 tags.Add(tag, \ + VR + \ + VFStr); 277 } 278 } 279 } 好了收工。 测试下成果
1 if (openFileDialog1.ShowDialog() != DialogResult.OK) 2 return; 3
4 string fileName = openFileDialog1.FileName; 5
6 handler = new DicomHandler(fileName); 7
8 handler.readAndShow(textBox1); 9
10 this.Text = \ + openFileDialog1.FileName; 11 12
13 backgroundWorker1.RunWorkerAsync();
这里处理gdi位图的时候直接用的setPix 处理速度比较慢所以用了backgroundWorker,实际应用中请使用内存缓冲跟指针的方式
否则效率低了是得不到客户的认可的哦,gdi位图操作可使用lockBits加指针的方式 ,12位的灰度像素数据可以第一次读取后缓存到内存中 以方便后面调窗的快速读取
优化这点代码也不难哈 对指针什么的熟点就行了,前几章都有。
这是ezDicom 经过公认测试的软件 我们来跟他对比一下,打开
调窗测试,我们注意到两个东西 在没有窗宽窗位时 默认窗宽是2047+1即2048 窗位是2048/2即1024
直观的感受是调窗宽像在调图像对比度 ,调窗位像在调图像亮度。
窗宽为255的时候图像是最瑞丽的 因为255其实就是8位图像的默认窗宽。 注意窗位那里有小小区别,ez窗位显示的是根据1024那里为0开始偏移 而我的程序是根据窗宽中间值没有偏移 没有偏移的情况稍微符合逻辑点吧。
但是可以看到原理是一样的 结果是一样的。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库dicom读取方法-资料(4)在线全文阅读。
相关推荐: