網站首頁 編程語言 正文
前言:關于uint8和float型數(shù)據(jù)
為了節(jié)省存儲空間,圖像一般存儲在一種特殊的數(shù)據(jù)類型——uint8(8位無符號整數(shù))中,以此方式存儲的圖像稱作8位圖像。
imread把灰度圖像存入一個8位矩陣,當為RGB圖像時,就存入8位RGB矩陣中。
因此,通過matlab以及各種python包(skimage,imageio)讀入圖像的數(shù)據(jù)類型都是uint8的,而在數(shù)據(jù)運算中,如果不轉換成double格式,計算可能會產生溢出。
總之先記住一句話:uint8用來存儲和顯示(imshow),double用來運算。
一、skimage.io。
讀取方法: skimage.io.imread('圖片地址')
返回的格式是uint8格式的數(shù)組。
二、imageio
讀取方法: imageio.imread('圖片地址')
.
返回的格式是一個imageio.core.util.Image
類,其里邊的元素也是uint8格式的。
以上兩種類型均可以通過skimage.img_as_float
轉換成float64格式的圖片。
轉換公式為::
元素轉換前后對比: 67(uint8) →→→ 0.2627(float64)。
在程序中的相互轉換:
1)把uint8轉換成float
轉換成float64。只需要利用skimage.img_as_float()函數(shù)即可。
如果需要轉換成float32格式,在float64的基礎上加上:.astype(np.float32)即可。
示例:
img = skimage.img_as_float(img)#從uint8轉換成float364 img = skimage.img_as_float(img).astype(np.float32)#從uint8轉換成float32
2)把float64轉換成uint8
這是目前來說找到的既能達到目的又不使圖像失真的方法了:分別利用skimage包和numpy中的函數(shù)進行轉換,如果直接用numpy函數(shù)進行轉換,會使圖像失真。
img = skimage.img_as_float(img)#先轉換成uint16的格式。 img = np.uint8(img)#再轉換成uint8的格式。
總結:以上的轉換中可以看出:能用圖形處理包的格式轉換函數(shù)就別用numpy中的格式轉換函數(shù),否則會出現(xiàn)各種各樣的問題。
附:不同數(shù)據(jù)類型的對比:
Data type | range |
---|---|
uint8 | 0 to 255 |
uint16 | 0 to 65535 |
uint32 | 0 to 232 |
float | -1 to 1 or 0 to 1 |
int8 | -128 to 127 |
int16 | -32768 to 32767 |
int32 | -231 to 231 - 1 |
補充:python處理圖像轉化為uint8格式
在python圖像處理過程中,遇到的RGB圖像的值是處于0-255之間的,為了更好的處理圖像,通常會將圖像值轉變到0-1之間
這個處理的過程就是圖像的uint8類型轉變?yōu)閒loat類型過程。img.astype('uint8')/255
float類型取值范圍 :-1 到1 或者 0到1
總結
原文鏈接:https://blog.csdn.net/u013044310/article/details/80739623
相關推薦
- 2022-03-08 Asp.NetCore3.1開源項目升級為.Net6.0的方法實現(xiàn)_實用技巧
- 2022-04-23 elementui el-pagination 分頁組件封裝
- 2023-01-03 python中import和from-import的區(qū)別解析_python
- 2022-05-25 swagger 3.0.0 版本和springboot整合啟動失敗
- 2022-06-26 Android界面一鍵變灰開發(fā)深色適配模式編程示例_Android
- 2023-07-13 遍歷對象并改變對象某個屬性的值
- 2022-06-15 Python文件的壓縮與解壓_python
- 2023-05-23 深入了解React中的合成事件_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支