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调用windows api锁定计算机示例
Apr 17 Python
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
Python进程间通信Queue实例解析
Jan 25 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
Python 读取指定文件夹下的所有图像方法
Apr 27 Python
Python中文编码知识点
Feb 18 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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内核探索:变量存储与类型使用说明
2014/01/30 PHP
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
python matplotlib画图实例代码分享
2017/12/27 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
年度考核评语
2014/01/19 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
保研推荐信
2014/05/09 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python