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实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
Nov 21 Python
Python中title()方法的使用简介
May 20 Python
Python实现字典去除重复的方法示例
Jul 31 Python
tensorflow实现softma识别MNIST
Mar 12 Python
如何利用python制作时间戳转换工具详解
Sep 12 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
Python while循环使用else语句代码实例
Feb 07 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
LeetCode189轮转数组python示例
Aug 05 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
CURL状态码列表(详细)
2013/06/27 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
php实现的农历算法实例
2015/08/11 PHP
js播放wav文件(源码)
2013/04/22 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
自动完成的搜索框javascript实现
2016/02/26 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python中的生成器和yield详细介绍
2015/01/09 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
python http接口自动化脚本详解
2018/01/02 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
函授大学生自我鉴定
2014/02/05 职场文书
县级文明单位申报材料
2014/05/23 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
环境卫生整治简报
2015/07/20 职场文书
退休欢送会致辞
2015/07/31 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python