python 实现12bit灰度图像映射到8bit显示的方法
作者:帅气的弟八哥 发布时间:2022-11-22 01:37:32
标签:python,12bit,灰度,8bit
图像显示和打印面临的一个问题是:图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 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 NXN
Returns 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)
来源:https://blog.csdn.net/jiandanjinxin/article/details/78365183


猜你喜欢
- 介绍对于服务器后端开发者而言,有时候需要把自己的一些服务直接暴露给PM或者其他RD使用,这个时候需要搭建一套web服务可以和前端用户做简单交
- 本文实例讲述了Python实现运行其他程序的四种方式。分享给大家供大家参考,具体如下:在Python中,可以方便地使用os模块来运行其他脚本
- 一. 静态资源static文件放在app中确认django.contrib.staticfiles包含在INSTALLED_APPS中。在s
- 本文实例为大家分享了js实现简易计算器的具体代码,供大家参考,具体内容如下最近,博主闲来无聊,就没事用js写了个简易计算器(博主是搞后端的,
- 1.元字符: . 它匹配除了换行字符外的任何字符,在 alternate 模式(re.DOTALL)下它甚至可以匹配换行 ^ 匹配行首。除非
- 准备工作下载python,本文以python3.6为例。python3.6下载地址:python3下载地址,选择合适的版本安装。安装成功后,
- 作者:norika 整理日期:2004年6月17日 基本介绍: showModalDialog() (IE 4
- function gaga(obj){ // 值允许输入一个小数点和数字 obj.value = obj.value.replace(/[^
- 图像的阈值处理一般使得图像的像素值更单一、图像更简单。阈值可以分为全局性质的阈值,也可以分为局部性质的阈值,可以是单阈值的也可以是多阈值的。
- 【一】添加监听事件 addHandler:function(node,type,fn){if
- 使用场景一:如果在一张表中ManayTOManay字段关联的是自身,也就是出项这样的代码:ManyToManyField(self)那么,你
- 字符串是不可变类型,可以重新赋值,但不可以索引改变其中一个值,只能拼接字符串建立新变量索引和切片索引:越界会报错切片:越界会自动修改不包含右
- Matplotlib效果图如下主要使用matplotlib.animation.FuncAnimation,上核心代码,# 定义静态绘图函数
- Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件.FTP的工作流程及基
- golang中GOPATH的简单理解 1、为什么要配置GOPATH配置GOPATH的用意是为了方便项目的部署和构建,以及可以直接使用go g
- random随机模块包括返回随机数的函数,可以用于模拟或者任何产生随机输出的程序。一.random模块常用函数介绍random.random
- 总结为:改注册表。顺手写个脚本:import tkinter as tkfrom tkinter import ttkimport winr
- 有些时候因为某些原因(如本地机器资源不足、数据不能离网等),需要使用本地电脑连接远程服务器进行开发工作,在这里记录下如何在远程Linux上配
- 一、 简介1、 基本介绍Pillow 是 Python 中较为基础的图像处理库,主要用于图像的基本处理,比如裁剪图像、调整图像大小和图像颜色
- 网站设计似乎朝着越来越复杂的方向发展。这部分源于显示器的逐步增大,随着宽屏显示器的增多,更有加剧网站页面复杂程度的趋势。但是我接触网站设计近