时间:2021-05-22
图像显示和打印面临的一个问题是:图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 CT 里的例子有软组织、骨头、脑组织、肺、腹部等等。
技术问题
1、显示器往往只有 8-bit, 而数据有 12- 至 16-bits。
2、如果将数据的 min 和 max 间 (dynamic range) 的之间转换到 8-bit 0-255 去,过程是个有损转换, 而且出来的图像往往突出的是些噪音。
算法分析
12-bit 到 8-bit 直接转换:
computeMinMax(pixel_val, min, max); // 先算图像的最大和最小值 for (i = 0; i < nNumPixels; i++) disp_pixel_val[i] = (pixel_val[i] - min)*255.0/(double)(max-min);这个算法必须有,对不少种类的图像是很有效的:如 8-bit 图像,MRI, ECT, CR 等等。
python实现
def matrix2uint8(matrix): ''' matrix must be a numpy array NXNReturns uint8 version ''' m_min= np.min(matrix) m_max= np.max(matrix) matrix = matrix-m_min return(np.array(np.rint( (matrix-m_min)/float(m_max-m_min) * 255.0),dtype=np.uint8)) #np.rint, Round elements of the array to the nearest integer.def preprocess(img, crop=True, resize=True, dsize=(224, 224)): if img.dtype == np.uint8: img = img / 255.0 if crop: short_edge = min(img.shape[:2]) yy = int((img.shape[0] - short_edge) / 2) xx = int((img.shape[1] - short_edge) / 2) crop_img = img[yy: yy + short_edge, xx: xx + short_edge] else: crop_img = img if resize: norm_img = imresize(crop_img, dsize, preserve_range=True) else: norm_img = crop_img return (norm_img).astype(np.float32)def deprocess(img): return np.clip(img * 255, 0, 255).astype(np.uint8)以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
笔记:python中存储16bit和32bit图像的方法。说明:主要是利用scipy库和pillow库,比较其中的不同。'''测试16bit和32bit图像的p
java中的char占几个字节实例分析1:“字节”是byte,“位”是bit; 2:1byte=8bit; char在Java中是2个字节。java采用un
以网速为例,b是bit,B是Byte,1Byte等于8bit,所以10Mbps/8等于1.25MBps的网速。 网速一般是指电脑或手机上网时,上传和下载数据时
vtn是网络虚拟终端(VTN),VirtualTerminalNetwork的缩写,在网络虚拟终端VTN上传输的数据采用8bit字节数据。 虚拟终端(VT)是
首先要明确一下转换规则:大数转小数,多出的高位部分会被截断。比如int占4个byte(32bit),byte占1个byte(8bit),那int转byte,in