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爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
Python中的各种装饰器详解
Apr 11 Python
selenium+python自动化测试环境搭建步骤
Jun 03 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
Python转换时间的图文方法
Jul 01 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
Python timer定时器两种常用方法解析
Jan 20 Python
Python3+Selenium+Chrome实现自动填写WPS表单
Feb 12 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 Python
python dict如何定义
Sep 02 Python
python上下文管理的使用场景实例讲解
Mar 03 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
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
对比分析json及XML
2014/11/28 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
跟老齐学Python之复习if语句
2014/10/02 Python
跟老齐学Python之网站的结构
2014/10/24 Python
简单介绍Python中的JSON使用
2015/04/28 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
法制宣传日活动总结
2014/04/29 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
学习教师法的心得体会
2014/09/03 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
python学习之panda数据分析核心支持库
2021/05/07 Python
详解Redis主从复制实践
2021/05/19 Redis
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript