python 实现12bit灰度图像映射到8bit显示的方法
图像显示和打印面临的一个问题是:图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 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读取MRI并显示为灰度图像实例代码
本文实例主要关于Python实现读取MRI(核磁共振成像)为numpy数组,使用imshow显示为灰度. 代码如下: import matplotlib.pyplot as plt import matplotlib.cbook as cbook import matplotlib.cm as cm import numpy as np # Data are 256x256 16 bit integers with cbook.get_sample_data('s1045.ima.gz') as
-
对python cv2批量灰度图片并保存的实例讲解
如下所示: import cv2 #循环灰度图片并保存 def grayImg(): for x in range(1,38): #读取图片 img = cv2.imread("C:\\Users\\lyl\\Desktop\\new_dahuoji\\img2\\{}.jpg".format(str(x))) GrayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #保存灰度后的新图片 cv2.imwrite("C:\\Users\\l
-
Python 将RGB图像转换为Pytho灰度图像的实例
问题: 我正尝试使用matplotlib读取RGB图像并将其转换为灰度. 在matlab中,我使用这个: img = rgb2gray(imread('image.png')); 在matplotlib tutorial中他们没有覆盖它.他们只是在图像中阅读 import matplotlib.image as mpimg img = mpimg.imread('image.png') 然后他们切片数组,但是这不是从我所了解的将RGB转换为灰度. lum_img = img[:,:,0] 编辑:
-
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
前言 写爬虫有一个绕不过去的问题就是验证码,现在验证码分类大概有4种: 图像类 滑动类 点击类 语音类 今天先来看看图像类,这类验证码大多是数字.字母的组合,国内也有使用汉字的.在这个基础上增加噪点.干扰线.变形.重叠.不同字体颜色等方法来增加识别难度. 相应的,验证码识别大体可以分为下面几个步骤: 灰度处理 增加对比度(可选) 二值化 降噪 倾斜校正分割字符 建立训练库 识别 由于是实验性质的,文中用到的验证码均为程序生成而不是批量下载真实的网站验证码,这样做的好处就是可以有大量的知道明确结果
-
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
在处理图像的时候经常是读取图片以后把图片转换为灰度图.作为一个刚入坑的小白,我在这篇博客记录了四种处理的方法. 首先导入包: import numpy as np import cv2 import tensorflow as tf from PIL import Image 方法一:在使用OpenCV读取图片的同时将图片转换为灰度图: img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE) print("cv2.imread(imgfile, cv2.I
-
Python cv2 图像自适应灰度直方图均衡化处理方法
__author__ = 'Administrator' import numpy as np import cv2 mri_img = np.load('mri_img.npy') # normalization mri_max = np.amax(mri_img) mri_min = np.amin(mri_img) mri_img = ((mri_img-mri_min)/(mri_max-mri_min))*255 mri_img = mri_img.astype('uint8') r,
-
python实现彩色图转换成灰度图
本文实例为大家分享了python实现彩色图转换成灰度图的具体代码,供大家参考,具体内容如下 from PIL import Image import os # 图像组成:红绿蓝 (RGB)三原色组成 亮度(255,255,255) image = "Annie1.jpg" img = Image.open(image) img_all = "素描" + image new = Image.new("L", img.size, 255) width
-
Python图像灰度变换及图像数组操作
使用python以及numpy通过直接操作图像数组完成一系列基本的图像处理 numpy简介: NumPy是一个非常有名的 Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量.矩阵.图像等)以及线性代数函数. 数组对象可以实现数组中重要的操作,比如矩阵乘积.转置.解方程系统.向量乘积和归一化.这为图像变形.对变化进行建模.图像分类.图像聚类等提供了基础. 在上一篇python基本图像操作中,当载入图像时,通过调用 array() 方法将图像转换成NumPy的数组对象
-
python 实现12bit灰度图像映射到8bit显示的方法
图像显示和打印面临的一个问题是:图像的亮度和对比度能否充分突出关键部分.这里所指的"关键部分"在 CT 里的例子有软组织.骨头.脑组织.肺.腹部等等. 技术问题 1.显示器往往只有 8-bit, 而数据有 12- 至 16-bits. 2.如果将数据的 min 和 max 间 (dynamic range) 的之间转换到 8-bit 0-255 去,过程是个有损转换, 而且出来的图像往往突出的是些噪音. 算法分析 12-bit 到 8-bit 直接转换: computeMinMax(p
-
python爬虫租房信息在地图上显示的方法
本人初学python是菜鸟级,写的不好勿喷. python爬虫用了比较简单的urllib.parse和requests,把爬来的数据显示在地图上.接下里我们话不多说直接上代码: 1.安装python环境和编辑器(自行度娘) 2.本人以58品牌公寓为例,爬取在杭州地区价格在2000-4000的公寓. #-*- coding:utf-8 -*- from bs4 import BeautifulSoup from urllib.parse import urljoin import requests
-
在python tkinter中Canvas实现进度条显示的方法
如下所示: from tkinter import * import time #更新进度条函数 def change_schedule(now_schedule,all_schedule): canvas.coords(fill_rec, (5, 5, 6 + (now_schedule/all_schedule)*100, 25)) root.update() x.set(str(round(now_schedule/all_schedule*100,2)) + '%') if round(
-
Python图像处理之图像的读取、显示与保存操作【测试可用】
本文实例讲述了Python图像处理之图像的读取.显示与保存操作.分享给大家供大家参考,具体如下: python作为机器学习和图像处理的利器,收到越来越多的推崇,特别是在图像处理领域,越来越多的研究和开发开始转向使用python语言,下面就介绍python图像处理中最基本的操作,即图像的读取显示与保存. 1.使用PIL模块 代码如下: # -*- coding:utf-8 -*- from PIL import Image import numpy as np def test_pil(): #读
-
Python编程实现控制cmd命令行显示颜色的方法示例
本文实例讲述了Python编程实现控制cmd命令行显示颜色的方法.分享给大家供大家参考,具体如下: 基于win7 + python3.4 运行效果: import ctypes import sys '''Windows CMD命令行颜色''' # 句柄号 STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE= -11 STD_ERROR_HANDLE = -12 # 前景色 FOREGROUND_BLACK = 0x0 # 黑 FOREGROUND_BLUE = 0
-
python实现在控制台输入密码不显示的方法
本文实例讲述了python实现在控制台输入密码不显示的方法.分享给大家供大家参考.具体实现方法如下: import console; namespace console{ //控制台读取密码,并显示星号 getPassword = function(){ var tstr = {}; var input = kbRead(true); while( input.wVirtualKeyCode != 0xD/*_VK_ENTER*/ ){ if( input.uChar.asciiChar ){
-
python字符串对其居中显示的方法
本文实例讲述了python字符串对其居中显示的方法.分享给大家供大家参考.具体如下: 下面的代码可以让字符串居中,左对齐和右对齐,字符串长度设置为50,居中后左右补充空格,右对齐会在左侧补充空格 string1 = "Now I am here." print string1.center( 50 ) print string1.rjust( 50 ) print string1.ljust( 50 ) 希望本文所述对大家的Python程序设计有所帮助.
-
Python中文竖排显示的方法
本文实例讲述了Python中文竖排显示的方法.分享给大家供大家参考.具体如下: 这里将中文竖排显示 比如 衣食者人之生利也,然且犹尚有节,葬埋者人之死利也,夫何独无节於此乎 输出为: 衣 | 之 | , | 尚 | 葬 | 之 | , | 无 | 乎 | 食 | 生 | 然 | 有 | 埋 | 死 | 夫 | 节 | . | 者 | 利 | 且 | 节 | 者 | 利 | 何 | 於 | 人 | 也 | 犹 | , | 人 | 也 | 独 | 此 | import math x=u'衣食者人之生
-
Python使用matplotlib绘制多个图形单独显示的方法示例
本文实例讲述了Python使用matplotlib绘制多个图形单独显示的方法.分享给大家供大家参考,具体如下: 一 代码 import numpy as np import matplotlib.pyplot as plt #创建自变量数组 x= np.linspace(0,2*np.pi,500) #创建函数值数组 y1 = np.sin(x) y2 = np.cos(x) y3 = np.sin(x*x) #创建图形 plt.figure(1) ''' 意思是在一个2行2列共4个子图的图中,
-
python tkinter界面居中显示的方法
由于tkinter没有直接提供居中显示的api,因此,要想将tk的对话框居中显示,需要用到tk自带的设定位置的方法geometry() nScreenWid, nScreenHei = tkLogin.maxsize() nCurWid = tkLogin.winfo_reqwidth() nCurHeight = tkLogin.winfo_reqheight() tkLogin.geometry("{}x{}+{}+{}".format(nCurWid, nCurHeight, n
随机推荐
- Angularjs自定义指令实现三级联动 选择地理位置
- MySQL主从同步、读写分离配置步骤
- 详解堆排序算法原理及Java版的代码实现
- Swift语言中字符串相关的基本概念解析
- PHP常用技巧汇总
- python实现用于测试网站访问速率的方法
- 微信小程序表单验证错误提示效果
- C++实现自底向上的归并排序算法
- 浅析Java中Data类的应用
- Android 使用Pull方法解析XML文件的方法
- 用nodejs搭建websocket服务器
- Linux下Oracle如何导入导出dmp文件详解
- 一个不错的仿携程自定义数据下拉选择select
- DropDownList实现可输入可选择(两种版本可选)
- 详解Ubuntu 从零开始搭建Python开发环境
- Mybatis velocity脚本的使用教程详解(推荐)
- 巧用局部变量提升javascript性能
- SpringBoot中利用MyBatis进行数据操作的示例
- 使用async await 封装 axios的方法
- 定时清理docker私服镜像的方法