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之eval()函数危险性浅析
Jul 03 Python
python 网络编程常用代码段
Aug 28 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
详解Python做一个名片管理系统
Mar 14 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
python中p-value的实现方式
Dec 16 Python
python实现简单颜色识别程序
Feb 19 Python
Opencv实现二维直方图的计算及绘制
Jul 21 Python
Python OpenCV实现图像模板匹配详解
Apr 07 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 - Html Transfer Code
2006/10/09 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
jquery复选框全选/取消示例
2013/12/30 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
js如何验证密码强度
2020/03/18 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
通过shell+python实现企业微信预警
2019/03/07 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
中国好声音广告词
2014/03/18 职场文书
《云房子》教学反思
2014/04/20 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
党委工作总结2015
2015/04/27 职场文书
导游词之丽江普济寺
2019/10/22 职场文书