網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
skimage包的exposure模塊
圖像亮度與對(duì)比度的調(diào)整,是放在skimage包的exposure模塊里面
1、gamma調(diào)整
對(duì)原圖像的像素,進(jìn)行冪運(yùn)算,得到新的像素值。公式中的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對(duì)數(shù)調(diào)整
這個(gè)剛好和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) #對(duì)數(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、判斷圖像對(duì)比度是否偏低
函數(shù):is_low_contrast(img)
返回一個(gè)bool型值
from skimage import data, exposure
image =data.moon()
result=exposure.is_low_contrast(image)
print(result)
輸出為False
4、調(diào)整強(qiáng)度
函數(shù):
skimage.exposure.rescale_intensity(image,?in_range='image',?out_range='dtype')
in_range 表示輸入圖片的強(qiáng)度范圍,默認(rèn)為'image', 表示用圖像的最大/最小像素值作為范圍
out_range 表示輸出圖片的強(qiáng)度范圍,默認(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,整體進(jìn)行了拉伸,但是數(shù)據(jù)類型沒(méi)有變,還是uint8
前面我們講過(guò),可以通過(guò)img_as_float()函數(shù)將unit8類型轉(zhuǎn)換為float型,實(shí)際上還有更簡(jiǎn)單的方法,就是乘以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],因此對(duì)float進(jìn)行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] 大或者小,那就進(jìn)行裁剪,如:
mat=exposure.rescale_intensity(tmp,in_range=(0,102))
print(mat)
輸出[ 0.5 ?1. ? 1. ],即原像素值除以102,超出1的變?yōu)?
如果一個(gè)數(shù)組里面有負(fù)數(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-04-12 el-form表單驗(yàn)證的一些方法總結(jié)
- 2022-07-16 Mybatis-plus設(shè)置某個(gè)字段值為null
- 2022-04-04 Element ui NavMenu 導(dǎo)航菜單 template中的內(nèi)容不顯示
- 2022-03-29 C語(yǔ)言全排列回溯算法介紹_C 語(yǔ)言
- 2022-09-07 淺談React底層實(shí)現(xiàn)原理_React
- 2022-06-02 Python導(dǎo)包模塊報(bào)錯(cuò)的問(wèn)題解決_python
- 2022-11-02 Rust指南枚舉類與模式匹配詳解_Rust語(yǔ)言
- 2022-06-20 Android?Flutter實(shí)現(xiàn)點(diǎn)贊效果的示例代碼_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支