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的Flask框架中实现单元测试的教程
Apr 20 Python
Python实现快速多线程ping的方法
Jul 15 Python
python表格存取的方法
Mar 07 Python
使用python编写监听端
Apr 12 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
Python字符串对象实现原理详解
Jul 01 Python
pytest中文文档之编写断言
Sep 12 Python
在Matplotlib图中插入LaTex公式实例
Apr 17 Python
基于python纯函数实现井字棋游戏
May 27 Python
python 绘制正态曲线的示例
Sep 24 Python
利用python清除移动硬盘中的临时文件
Oct 28 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
深入解析PHP的引用计数机制
2013/06/14 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
PHP中header用法小结
2016/05/23 PHP
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
python使用PyFetion来发送短信的例子
2014/04/22 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python中__call__内置函数用法实例
2015/06/04 Python
Python编程中对文件和存储器的读写示例
2016/01/25 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
adidas美国官网:adidas US
2016/09/21 全球购物
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
大学生军训广播稿
2014/01/24 职场文书
作弊检讨书1000字
2014/02/01 职场文书
竞聘书格式及范文
2014/03/31 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
react国际化react-intl的使用
2021/05/06 Javascript