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之hello world
May 21 Python
Python编程中用close()方法关闭文件的教程
May 24 Python
python实现下载整个ftp目录的方法
Jan 17 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
对django views中 request, response的常用操作详解
Jul 17 Python
PyQt Qt Designer工具的布局管理详解
Aug 07 Python
Django实现网页分页功能
Oct 31 Python
AUC计算方法与Python实现代码
Feb 28 Python
解决c++调用python中文乱码问题
Jul 29 Python
使用Python实现NBA球员数据查询小程序功能
Nov 09 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 MSSQL 存储过程的方法
2008/12/24 PHP
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
php与js的区别是什么
2013/08/05 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
pymssql ntext字段调用问题解决方法
2008/12/17 Python
python使用socket远程连接错误处理方法
2015/04/29 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
Django缓存系统实现过程解析
2019/08/02 Python
Python 音频生成器的实现示例
2019/12/24 Python
基于opencv实现简单画板功能
2020/08/02 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
专科文秘应届生求职信
2013/11/18 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
机动车交通事故协议书
2015/01/29 职场文书
介绍信的格式
2015/01/30 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL