餐饮网站建设方案,怎么制作一个网站及小程序,wordpress主题大全,标书制作难吗转自#xff1a;http://blog.sina.com.cn/s/blog_4bce5f4b0100o9iy.html 图像显示和打印面临的一个问题是#xff1a;图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 CT 里的例子有软组织、骨头、脑组织、肺、腹部等等。 技术问题#xff1a; 显示…转自http://blog.sina.com.cn/s/blog_4bce5f4b0100o9iy.html 图像显示和打印面临的一个问题是图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 CT 里的例子有软组织、骨头、脑组织、肺、腹部等等。 技术问题 显示器往往只有 8-bit 而数据有 12- 至 16-bits。 如果将数据的 min 和 max 间 (dynamic range) 的之间转换到 8-bit 0-255 去该过程是个有损转换 而且出来的图像往往突出的是些噪音。
针对这些问题研究人员先提出一些要求 (requirements)然后根据这些要求提出了一些算法。这些算法现在都很成熟。
要求一充分利用 0-255 间的显示有效值域 要求二尽量减少值域压缩带来的损失 要求三不能损失应该突出的组织部分
算法分析 A. 16-bit 到 8-bit 直接转换
computeMinMax(pixel_val, min, max); // 先算图像的最大和最小值 for (i 0; i nNumPixels; i) disp_pixel_val (pixel_val - min)*255.0/(double)(max - min);
这个算法必须有对不少种类的图像是很有效的如 8-bit 图像MRI, ECT, CR 等等。
B. Window-leveling 算法: W/L 是专门为 CT 设计的。原理很简单CT 图像里不同组织的密度 (用 Hounsfield 单位) 是在固定的值域 与具体设备和成像软件没有关系。因此要看头颅时 我们只需将头颅的值域转换到 0-255 就行了。
CT W/L 不讲头颅值域的 min 和 max, 而说 max - min (即 window_width) 和 (maxmin)/2 (即 window_center)。
我们还可以用原来的公式只是 min 和 max 的算法不一样。
// 先算图像的最大和最小值 min (2*window_center - window_width)/2.0 0.5; max (2*window_center window_width)/2.0 0.5; for (i 0; i nNumPixels; i) disp_pixel_val (pixel_val - min)*255.0/(double)(max - min);
请注意CT 图像必须先转换成 Hounsfield 值再做 window-level。 这个转换包括将多余高位 bits 变成 0 (clipping), 和用 recale slope 和 rescale intercept 来做单位转换。
HU pixel_val*rescale_slope rescale_intercept
C.非线性转换
我刚刚 是将 min 和 max 间的数值线性转换到 0-255 之间。 如果 max - min 出来是个很大的数值比如说 25500 那就说每 100 原始密度会压缩成一个显示灰度。 这样的损失可能会很大。
因为人眼对灰度地反应式是非线性的非线性转换可以解决一些问题。 常用算法有 log 和 gamma 两种。gamma 比较好调 gamma 值因此用得比较多。
for (i 0; i nNumPixels; i) disp_pixel_val 255.0 * pow(pixel_value/(max-min), 1.0/gamma);
D. 有效值域CT 的 Window-level 有标准的定义请参看 “Practical CT Techniques, by Wladyslaw Gedroyc and Sheila Rankin, Springer-Verlag。最常用到的有 WW 400, WL 40 实用许多部位; WW 100, WL 36 (头);WW 3200, WL 200 (骨头)等等。
补充几点
o 在做任何转换时要注意有效灰度域外的数值的处理。 最好先用 int 而非 unsigned char 来算再转入矩阵以避免 overflow 和 underflow。
double dFactor 255.0/(double)(max - min); int nPixelVal;
for (i 0; i nNumPixels; i) { nPixelVal (int) ((pixel_val - min)*dFactor); if (nPixelVal 0) disp_pixel_val 0; else if (nPixelVal 255) disp_pixel_val 255; else disp_pixel_val nPixelVal;
}
o 做 window-level 时要注意 min 和 max 之外原始数据的处理
double dFactor min, max; int nPixelVal;
min (2*window_center - window_width)/2.0 0.5; max (2*window_center window_width)/2.0 0.5; dFactor 255.0/(double)(max - min);
for (i 0; i nNumPixels; i) { if (pixel_val min) { disp_pixel_val 0; continue; } if (pixel_val max) { disp_pixel_val 255; continue; } nPixelVal (int)((pixel_val - min)*dFactor); if (nPixelVal 0) disp_pixel_val 0; else if (nPixelVal 255) disp_pixel_val 255; else disp_pixel_val nPixelVal;
} 以下内容转自“CT诊断学”一书希望能帮助大家更清楚地认识窗宽窗位。
窗宽与窗位 CT能识别人体内2000个不同灰阶的密度差别。而人的眼睛却只能分辨16 个灰阶度。因此人眼在CT图像上能分辨的CT值应为125 Hu ( 2000 / 16 。换句话说人体内不同组织CT 值只有相差125Hu 以上才能为人眼所识别。人体软组织CT值多变化在20 - 50 Hu之间人眼就无法识别。为此必须进行分段观察才能使CT 的优点反映出来。观察的CT 值范围人们称之为窗宽 观察的中心CT值即为窗位或窗中心。 一窗宽指CT图像所显示的CT 值范围。在此CT值范围内的组织结构按其密度高低从白到黑分为16 个灰阶以供观察对比。例如窗宽选定为100 Hu 则人眼可分辨的CT值为100 / 16 6 . 25 Hu 即2 种组织CT值相差在6 . 25Hu以上者即可为人眼所识别。因此窗宽的宽窄直接影响图像的清晰度与对比度。如果使用窄的窗宽则显示的CT 值范围小每一灰阶代表的CT 值幅度小对比度强适于观察密度接近的组织结构如脑组织。反之如果使用宽的窗宽则显示的CT值范围大每一灰阶代表的CT 值幅度大则图像对比度差但密度均匀适于观察密度差别大的结构如骨与软组织。 二窗位窗中心指窗宽范围内均值或中心值。比如一幅CT图像窗宽为100Hu窗位选在0Hu则以窗位为中心0Hu向上包括50Hu向下包括-50Hu凡是在这个100Hu 范围内的组织均可显示出来并为人眼所识别。凡是大于50Hu 的组织均为白色凡是小子-50Hu 的组织均为黑色其密度差异无法显示。人眼只能识别土50Hu 范围内的CT 值每一个灰阶的CT 值范围是100 / 166 . 25 Hu 。 原则上说窗位应该等于或接近需要观察的CT 值窗宽应能反映该组织或病变的CT 值变化范围。 本文来自: HC3i数字医疗论坛(http://bbs.hc3i.cn/) 详细http://bbs.hc3i.cn/thread-26631-1-1.html