小編寫這篇文章的一個主要目的,主要是來給大家詳細介紹關于python數字圖像的一些事宜,包括數字圖像處理的一些流程類的問題。包括圖像處理的對比度,圖像處理的亮度,這之間的一個相關調整,具體的實例,下面就給大家詳細解答下。
skimage包的exposure模塊
圖像明亮度與相互對比之間的調整,是放在skimage包的exposure模塊里面
1、gamma調整
對原圖像的像素,進行冪運算,得到新的像素值。公式中的g就是gamma值。
如果gamma>1,新圖像比原圖像暗
如果gamma<1,新圖像比原圖像亮
函數格式為:skimage.exposure.adjust_gamma(image,gamma=1)
gamma參數默認為1,原像不發生變化。
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)#調暗 gam2=exposure.adjust_gamma(image,0.5)#調亮 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對數調整
這個剛好和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)#對數調整 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、判斷圖像對比度是否偏低
函數:is_low_contrast(img)
返回一個bool型值
from skimage import data,exposure image=data.moon() result=exposure.is_low_contrast(image) print(result) 輸出為False
4、調整強度
函數:
skimage.exposure.rescale_intensity(image,in_range='image',out_range='dtype')
in_range表示輸入圖片的強度范圍,默認為'image',表示用圖像的最大/最小像素值作為范圍
out_range表示輸出圖片的強度范圍,默認為'dype',表示用圖像的類型的最大/最小值作為范圍
默認情況下,輸入圖片的[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變為0,最大值由153變為255,整體進行了拉伸,但是數據類型沒有變,還是uint8
前面我們講過,可以通過img_as_float()函數將unit8類型轉換為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調整后,范圍變為[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)
結果為[0. 0.5 1.]
如果原始像素值不想被拉伸,只是等比例縮小,就使用in_range參數,如:
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
如果參數in_range的[main,max]范圍要比原始像素值的范圍[min,max]大或者小,那就進行裁剪,如:
mat=exposure.rescale_intensity(tmp,in_range=(0,102))
print(mat)
輸出[0.5 1.1.],即原像素值除以102,超出1的變為1
如果一個數組里面有負數,現在想調整到正數,就使用out_range參數。如:
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]
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128825.html
摘要:運行代碼的結果如下是大名鼎鼎的并且非常權威的圖像處理庫。允許使用不同的媒介,用于創建動畫片,數字形象和數字藝術,也可以用于圖像處理。從正面的角度看,他是一個可靈活調整以及一個很好的了解圖像處理算法的途徑。 文/ Tine譯/Mantra 附原文地址:http://blog.webkid.io/image-p... 如果你正在尋找更高效的辦法來處理或操縱你 web 項目中的圖片,那么這篇...
摘要:如果噪音在那里,它就會被放大為了避免這種情況,會應用對比限制如果任何直方圖超出指定的對比度限制默認情況下是,在應用直方圖均衡之前,這些像素被裁剪并均勻地分布到其他均衡后,刪除邊界中的工件,采用雙線性插值代碼 Histograms - 2: Histogram Equalization 直方圖均衡化是圖像處理領域中利用圖像直方圖對對比度進行調整的方法.通過這種方法,亮度可以更好地在直方...
??歡迎訂閱《從實戰學python》專欄,用python實現爬蟲、辦公自動化、數據可視化、人工智能等各個方向的實戰案例,有趣又有用!?? 更多精品專欄簡介點這里 治愈生活的良方 就是保持對生活的熱愛 前言 哈嘍,大家好,我是一條。 每次和女朋友出去玩,拍照是必須的,天氣好還行,天氣要是不好,加上我這破手機,那拍的簡直慘不忍睹,自己都不過去。 但是沒什么能難倒程序員的,為了不挨罵,連夜寫出去霧...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02