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多线程和队列操作实例
Jun 21 Python
python使用 HTMLTestRunner.py生成测试报告
Oct 20 Python
python爬取各类文档方法归类汇总
Mar 22 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
在python里面运用多继承方法详解
Jul 01 Python
使用coverage统计python web项目代码覆盖率的方法详解
Aug 05 Python
python3 requests库文件上传与下载实现详解
Aug 22 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 Python
python 5个顶级异步框架推荐
Sep 09 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 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中根据变量的类型 选择echo或dump
2012/07/05 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
跟我学Laravel之安装Laravel
2014/10/15 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
js单词形式的运算符
2014/05/06 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
vue.js与后台数据交互的实例讲解
2018/08/08 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
详解Python中类的定义与使用
2017/04/11 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
Python 字符串换行的多种方式
2018/09/06 Python
分享一个python的aes加密代码
2020/12/22 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
学生实习推荐信范文
2013/11/26 职场文书
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
2014年统战工作总结
2014/12/09 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
置业顾问岗位职责
2015/02/09 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
电影开国大典观后感
2015/06/04 职场文书
村官2015年度工作总结
2015/10/14 职场文书