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实现linux服务器批量修改密码并生成execl
Apr 22 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
Python3列表内置方法大全及示例代码小结
May 10 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
Jul 09 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
Feb 20 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
Apr 01 Python
python requests模块的使用示例
Apr 07 Python
Python入门学习之类的相关知识总结
May 25 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 str_replace的替换漏洞
2008/03/15 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
Flask之flask-session的具体使用
2018/07/26 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
党课心得体会范文
2014/09/09 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
退学证明范本3篇
2014/10/29 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
Django项目如何获得SSL证书与配置HTTPS
2021/04/30 Python
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis