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中static相关知识小结
Jan 02 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
django框架ModelForm组件用法详解
Dec 11 Python
使用Python进行防病毒免杀解析
Dec 13 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 Python
python安装及变量名介绍详解
Dec 12 Python
详解pytorch创建tensor函数
Mar 22 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中输出转义JavaScript代码的实现代码
2011/04/22 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
一步步解析Python斗牛游戏的概率
2016/02/12 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python机器学习之随机森林(七)
2018/03/26 Python
python迭代dict的key和value的方法
2018/07/06 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
Django分页功能的实现代码详解
2019/07/29 Python
python操作cfg配置文件方式
2019/12/22 Python
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
高级工程师英文求职信
2014/03/19 职场文书
老公爱的承诺书
2014/03/31 职场文书
入党综合考察材料
2014/06/02 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
个人批评与自我批评
2014/10/15 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
Python中常见的导入方式总结
2021/05/06 Python
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python