網(wǎng)站首頁 編程語言 正文
skimage包的exposure模塊
圖像亮度與對比度的調(diào)整,是放在skimage包的exposure模塊里面
1、gamma調(diào)整
對原圖像的像素,進行冪運算,得到新的像素值。公式中的g就是gamma值。
如果gamma>1, 新圖像比原圖像暗
如果gamma<1,新圖像比原圖像亮
函數(shù)格式為:skimage.exposure.adjust_gamma(image,?gamma=1)
gamma參數(shù)默認(rèn)為1,原像不發(fā)生變化 。
from skimage import data, exposure, img_as_float
import matplotlib.pyplot as plt
image = img_as_float(data.moon())
gam1= exposure.adjust_gamma(image, 2) #調(diào)暗
gam2= exposure.adjust_gamma(image, 0.5) #調(diào)亮
plt.figure('adjust_gamma',figsize=(8,8))
plt.subplot(131)
plt.title('origin image')
plt.imshow(image,plt.cm.gray)
plt.axis('off')
plt.subplot(132)
plt.title('gamma=2')
plt.imshow(gam1,plt.cm.gray)
plt.axis('off')
plt.subplot(133)
plt.title('gamma=0.5')
plt.imshow(gam2,plt.cm.gray)
plt.axis('off')
plt.show()
2、log對數(shù)調(diào)整
這個剛好和gamma相反
原理:I=log(I)
from skimage import data, exposure, img_as_float
import matplotlib.pyplot as plt
image = img_as_float(data.moon())
gam1= exposure.adjust_log(image) #對數(shù)調(diào)整
plt.figure('adjust_gamma',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(image,plt.cm.gray)
plt.axis('off')
plt.subplot(122)
plt.title('log')
plt.imshow(gam1,plt.cm.gray)
plt.axis('off')
plt.show()
3、判斷圖像對比度是否偏低
函數(shù):is_low_contrast(img)
返回一個bool型值
from skimage import data, exposure
image =data.moon()
result=exposure.is_low_contrast(image)
print(result)
輸出為False
4、調(diào)整強度
函數(shù):
skimage.exposure.rescale_intensity(image,?in_range='image',?out_range='dtype')
in_range 表示輸入圖片的強度范圍,默認(rèn)為'image', 表示用圖像的最大/最小像素值作為范圍
out_range 表示輸出圖片的強度范圍,默認(rèn)為'dype', 表示用圖像的類型的最大/最小值作為范圍
默認(rèn)情況下,輸入圖片的[min,max]范圍被拉伸到[dtype.min, dtype.max],如果
dtype=uint8, 那么dtype.min=0, dtype.max=255
import numpy as np
from skimage import exposure
image = np.array([51, 102, 153], dtype=np.uint8)
mat=exposure.rescale_intensity(image)
print(mat)
輸出為[ ?0 127 255]
即像素最小值由51變?yōu)?,最大值由153變?yōu)?55,整體進行了拉伸,但是數(shù)據(jù)類型沒有變,還是uint8
前面我們講過,可以通過img_as_float()函數(shù)將unit8類型轉(zhuǎn)換為float型,實際上還有更簡單的方法,就是乘以1.0
import numpy as np
image = np.array([51, 102, 153], dtype=np.uint8)
print(image*1.0)
即由[51,102,153]變成了[ ?51. ?102. ?153.]
而float類型的范圍是[0,1],因此對float進行rescale_intensity 調(diào)整后,范圍變?yōu)閇0,1],而不是[0,255]
import numpy as np
from skimage import exposure
image = np.array([51, 102, 153], dtype=np.uint8)
tmp=image*1.0
mat=exposure.rescale_intensity(tmp)
print(mat)
結(jié)果為[ 0. 0.5 ?1. ]
如果原始像素值不想被拉伸,只是等比例縮小,就使用in_range參數(shù),如:
import numpy as np
from skimage import exposure
image = np.array([51, 102, 153], dtype=np.uint8)
tmp=image*1.0
mat=exposure.rescale_intensity(tmp,in_range=(0,255))
print(mat)
輸出為:[ 0.2 ?0.4 ?0.6],即原像素值除以255
如果參數(shù)in_range的[main,max]范圍要比原始像素值的范圍[min,max] 大或者小,那就進行裁剪,如:
mat=exposure.rescale_intensity(tmp,in_range=(0,102))
print(mat)
輸出[ 0.5 ?1. ? 1. ],即原像素值除以102,超出1的變?yōu)?
如果一個數(shù)組里面有負數(shù),現(xiàn)在想調(diào)整到正數(shù),就使用out_range參數(shù)。如:
import numpy as np
from skimage import exposure
image = np.array([-10, 0, 10], dtype=np.int8)
mat=exposure.rescale_intensity(image, out_range=(0, 127))
print(mat)
輸出[ ?0 ?63 127]
原文鏈接:https://www.cnblogs.com/denny402/p/5124402.html
相關(guān)推薦
- 2022-05-09 Go語言context上下文管理的使用_Golang
- 2022-12-14 Flutter應(yīng)用框架搭建實現(xiàn)屏幕適配方案詳解_Android
- 2022-10-01 Qt?timerEvent實現(xiàn)簡單秒表功能_C 語言
- 2022-06-16 C++與C語言常用的語法對比_C 語言
- 2023-12-11 使用SSH地址拉取遠程倉庫代碼報下面的錯誤
- 2022-06-29 python人工智能tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN_python
- 2022-11-08 Fluentd搭建日志收集服務(wù)_服務(wù)器其它
- 2022-06-21 C++分析講解類的靜態(tài)成員函數(shù)如何使用_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支