python 实现12bit灰度图像映射到8bit显示的方法


Posted in Python onJuly 08, 2019

图像显示和打印面临的一个问题是:图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python批量制作雷达图的实现方法
Jul 26 Python
tensorflow获取变量维度信息
Mar 10 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
python挖矿算力测试程序详解
Jul 03 Python
python画双y轴图像的示例代码
Jul 07 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
python通过链接抓取网站详解
Nov 20 Python
关于Tensorflow分布式并行策略
Feb 03 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
Python代码注释规范代码实例解析
Aug 14 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 #Python
python如何实现异步调用函数执行
Jul 08 #Python
django中forms组件的使用与注意
Jul 08 #Python
python celery分布式任务队列的使用详解
Jul 08 #Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 #Python
Python数据类型之列表和元组的方法实例详解
Jul 08 #Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 #Python
You might like
php自动适应范围的分页代码
2008/08/05 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
分享一个常用的javascript静态类
2014/12/31 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
Python 多核并行计算的示例代码
2017/11/07 Python
python爬取个性签名的方法
2018/06/17 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
python使用PyQt5的简单方法
2019/02/27 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
Linux如何为某个操作添加别名
2013/03/01 面试题
信息专业个人的自我评价
2013/12/27 职场文书
发展部经理职责规定
2014/02/22 职场文书
赔偿协议书范本
2014/04/15 职场文书
假释思想汇报范文
2014/10/11 职场文书
公司承诺书格式范文
2015/04/28 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS