基本介紹
圖像增強(qiáng)技術(shù)的作用,簡單點(diǎn)說,就是通過對圖像進(jìn)行加工處理,使圖像能更好的在其他領(lǐng)域起作用,比如人臉識別,圖像分類等人工智能領(lǐng)域,又或者是在通信領(lǐng)域,通過加工恢復(fù)圖像在傳輸中丟失的某些東西。
那么什么又是圖像增強(qiáng)呢?通過對圖像進(jìn)行一些加工,從簡單的裁剪、變換灰度等到復(fù)雜的各種濾波公式去噪點(diǎn)等等 ,大致滿足以下兩點(diǎn)的都屬于圖像增強(qiáng)的一部分。
1.改變圖像視覺效果,使其能更好的應(yīng)用在某類場景中
2.突出圖片某部分特征,滿足某些特殊分析的需要。
在實(shí)現(xiàn)具體算法,我們總需要先思考大致的思路。學(xué)習(xí)圖像增強(qiáng)技術(shù)也是如此,在學(xué)習(xí)這門新技術(shù)前,我們可以根據(jù)一些以往的經(jīng)驗(yàn)先想想大概要做些什么。
- 圖像的收集
- 圖像的輸入
- 圖像的處理
- 圖像的輸出
圖像的收集
這里主要涉及的是從視頻中截取我們需要的圖片。需要使用到的軟件“ffmpeg”。
安裝
通過網(wǎng)頁搜索直接進(jìn)入官網(wǎng)點(diǎn)擊“Download”,選擇自己電腦系統(tǒng)后,點(diǎn)擊下方紅色勾
選區(qū)域,進(jìn)入下載界面,只用看自己電腦是64位/32位,點(diǎn)擊下載。
下載好后,配置環(huán)境變量。
右鍵‘我的電腦’,--屬性—高級系統(tǒng)設(shè)置—環(huán)境變量—用戶變量—編輯‘path’—添加ffmpeg軟件的文件夾下的bin文件的路徑。
使用
通過‘cmd’命令行執(zhí)行以下操作:
‘ffmpeg -i F -r K -f image2 image-%05d.jpg’
F:需要處理視頻的地址。
K:填一個(gè)數(shù)字表示每秒截幾張圖,填類似1/1的形式表示一幀截一張圖。
其他更詳細(xì)用法可以自行百度,溫馨提示:在哪個(gè)文件夾執(zhí)行命令操作生成
的圖片就保存在哪個(gè)文件夾。
圖像的輸入
很多時(shí)候我們需要處理的是大量的圖片,這就需要批量的處理文件。
| #需要用到os和cv2庫(安裝請安裝opencv,導(dǎo)入請導(dǎo)入cv2
imagelist=os.listdir(path)#讀取path目錄下所有文件的名字
for i in imagelist:
if(i.endswith('.jpg' or '.png')):
#如果文件以jpg或者png結(jié)尾image=cv2.imread(path+'/'+i)#讀取圖片
圖像的處理
圖像增強(qiáng)技術(shù)的處理技術(shù)很多,先從一些簡單操作開始。如圖像的裁剪、旋轉(zhuǎn)、鏡像翻轉(zhuǎn)和縮放等基本操作開始,主要使用cv2庫。
#裁剪(crop)
Image=cv2.imread(‘某張圖片地址’) #讀取圖片
sp=image.shape #讀取圖像的形狀信息并通過數(shù)組輸出[圖像的高,圖像的寬,圖像通道數(shù)]
h=sp[0]
w=sp[1]
#截取圖像某個(gè)區(qū)域,可配合random庫隨機(jī)截取,也可以自己設(shè)置截取范圍
y1=int((1/3)*h)
y2=int((2/3)*h)
x1=int((1/3)*w)
x2=int((2/3)*w)
img=image[y1:y2,x1:x2]
#將圖片左上角視為原點(diǎn),截取y1到y(tǒng)2、x1到x2的區(qū)域
#旋轉(zhuǎn)(roating)
h,w=image.shape[:2]
center=(h//2,w//2)#旋轉(zhuǎn)中心
#圖片旋轉(zhuǎn)
#degree旋轉(zhuǎn)角度,size旋轉(zhuǎn)后的大小,填1為等比例旋轉(zhuǎn)。
M = cv2.getRotationMatrix2D(center, degree, size)
#執(zhí)行旋轉(zhuǎn)操作,roated為旋轉(zhuǎn)后的圖片
roated = cv2.warpAffine(image, M, (w, h))
#鏡像翻轉(zhuǎn)(flip)
image=cv2.imread(path)
image=cv2.flip(image,1)#圖片翻轉(zhuǎn)
#縮放
image=cv2.imread(path)
image=cv2.resize(image,(192,192))#括號內(nèi)填縮放后的大小
圖像的輸出
除了直接保存為圖片形式外
我們在使用這些處理后的圖片時(shí),更多的要用到名為“npz”的文件格式。
data=[]#該數(shù)組用于存儲圖片
label=[]#用于儲存圖片類型,看一個(gè)實(shí)例
pathone='D:\\imgCut\\Archive\\resize\\nosmoke'#無煙集圖片地址
pathtwo="D:\\imgCut\\Archive\\resize\\smoke"#有煙集圖片地址
#0代表無煙圖片,1代表有煙圖片
def saveZ(pathone,pathtwo):
data=[]
label=[]
imagelist_one=os.listdir(pathone)#讀取目錄下所有文件的名字
imagelist_two=os.listdir(pathtwo)
for i in imagelist_one:
if(i.endswith('.jpg' or '.png')):
#如果文件以jpg結(jié)尾
image=cv2.imread(pathone+'\\\\'+i)
data.append(image)#將圖片加入數(shù)組,這里存入的是圖片本身而不是一個(gè)引用。
label.append(0)
for i in imagelist_two:
if(i.endswith('.jpg' or '.png')):
#如果文件以jpg結(jié)尾
image=cv2.imread(pathtwo+'\\\\'+i)
data.append(image)
label.append(1)
np.savez('arc.npz', data=data, label=label)
#文件以npz形式儲存,里面有兩個(gè)數(shù)組data,label
之后我們就可以在其他地方直接調(diào)用這個(gè)文件里的數(shù)組
arc=np.load('arc.npz')#導(dǎo)入這個(gè)文件data=arc['data']#讀取里面的data數(shù)組和label數(shù)組label=arc['label']
-
圖像處理
+關(guān)注
關(guān)注
27文章
1293瀏覽量
56771 -
人工智能
+關(guān)注
關(guān)注
1791文章
47350瀏覽量
238739 -
人臉識別
+關(guān)注
關(guān)注
76文章
4012瀏覽量
81957
發(fā)布評論請先 登錄
相關(guān)推薦
評論