python實(shí)現(xiàn)圖片處理和特征提取詳解
這是一張靈異事件圖。。。開個(gè)玩笑,這就是一張普通的圖片。
毫無疑問,上面的那副圖畫看起來像一幅電腦背景圖片。這些都?xì)w功于我的妹妹,她能夠?qū)⒁恍┛瓷先テ婀值臇|西變得十分吸引眼球。然而,我們生活在數(shù)字圖片的年代,我們也很少去想這些圖片是在怎么存儲(chǔ)在存儲(chǔ)器上的或者去想這些圖片是如何通過各種變化生成的。
在這篇文章中,我將帶著你了解一些基本的圖片特征處理。data massaging 依然是一樣的:特征提取,但是這里我們還需要對(duì)跟多的密集數(shù)據(jù)進(jìn)行處理,但同時(shí)數(shù)據(jù)清理是在數(shù)據(jù)庫(kù)、表、文本等中進(jìn)行。這是如何對(duì)圖片進(jìn)行處理的呢?我們將看到圖片是怎么存儲(chǔ)在硬盤中的,同時(shí)我們可以通過使用基本的操作來處理圖片。
導(dǎo)入圖片
在python中導(dǎo)入圖片是非常容易的。下面的代碼就是python如何導(dǎo)入代碼的:
代碼解釋:
這幅圖片有一些顏色和許多像素組成,為了形象這幅圖片是如何存儲(chǔ)的,把每一個(gè)像素想象成矩陣中的每一個(gè)元素?,F(xiàn)在這些元素包含三個(gè)不同的密度信息,分別為顏色紅、綠、藍(lán)(RGB)。所以一個(gè)RGB的圖片就變成了三維的矩陣。每一個(gè)數(shù)字就是顏色的密度(RGB)
讓我們來看看一些轉(zhuǎn)化:
就像你在上面看到的一樣,我們對(duì)三個(gè)顏色維度進(jìn)行了一些操作轉(zhuǎn)變。黃色不是一種直接表示的顏色,它是紅色和綠色的組合色。我們通過設(shè)置其他顏色密度值為零而得到了這些變化。
將圖像轉(zhuǎn)換為二維矩陣
處理圖像的三維色有時(shí)可能是很復(fù)雜和冗余的。如果我們壓縮圖像為二維矩陣,在特征提取后,它將變得更簡(jiǎn)單。這是通過灰度圖像或二值化(Binarizing)圖像。當(dāng)圖片顯示為不同灰色強(qiáng)度組合時(shí)灰度圖像比二值化(Binarizing)圖像顏色更加飽滿,而二值化(binarzing)只是簡(jiǎn)單的構(gòu)建一個(gè)充滿0和1的二維矩陣而已。
這里將叫你如何將RGB圖片轉(zhuǎn)變成灰度圖像:
就如你所見,圖片的維度已經(jīng)降為了兩種灰度值了,然而圖片的特征在兩幅圖片中依然清晰可見。這就是為什么灰色圖像在硬盤上存貯更加節(jié)約空間。
現(xiàn)在讓我們來二值化灰色圖像,這是通過找到閥值和灰色度像素標(biāo)志(flagging the pixels of Grayscale)。在這篇文章中我已經(jīng)通過Otsu‘s方法來找到閥值的,Otsu‘s方法是通過最大化兩類不同像素點(diǎn)之間的距離來計(jì)算最優(yōu)閥值的,也就是說這個(gè)閥值最小化了同類間的變量值。
模糊化圖片
本文最后部分我們將介紹更多有關(guān)特征提取的內(nèi)容:圖像模糊。灰度或二值圖像有時(shí)需要捕獲更多的圖像而模糊圖像在這樣的場(chǎng)景下是非常方便的。例如,在這張圖片如果鐵路軌道比鞋子更加重要,模糊處理將會(huì)添加跟多的值。從這個(gè)例子中我們對(duì)模糊處理變得更清晰。模糊算法需要將鄰近像素的加權(quán)平均值加到周圍每個(gè)顏色像素中。下面是一個(gè)模糊處理的例子:
對(duì)上面的照片模糊處理后,我們清楚地看到鞋已經(jīng)與鐵路軌道具有相同的密度等級(jí)。因此,在許多場(chǎng)景中這種技術(shù)非常方便。
讓我們看一個(gè)實(shí)際例子。我們想在一個(gè)小鎮(zhèn)的照片上統(tǒng)計(jì)的人數(shù)。但是照片上還有一些建筑圖像。現(xiàn)在建筑背后的人的顏色強(qiáng)度會(huì)低于建筑本身。因此,這些人我們就難以計(jì)數(shù)。模糊處理場(chǎng)景后才能平衡建筑和人在圖像中的顏色強(qiáng)度。
完整的代碼:
image = imread(r"C:\Users\Tavish\Desktop\7.jpg") show_img(image) red, yellow = image.copy(), image.copy() red[:,:,(1,2)] = 0 yellow[:,:,2]=0 show_images(images=[red,yellow], titles=['Red Intensity','Yellow Intensity']) from skimage.color import rgb2gray gray_image = rgb2gray(image) show_images(images=[image,gray_image],titles=["Color","Grayscale"]) print "Colored image shape:", image.shape print "Grayscale image shape:", gray_image.shape from skimage.filter import threshold_otsu thresh = threshold_otsu(gray_image) binary = gray_image > thresh show_images(images=[gray_image,binary_image,binary],titles=["Grayscale","Otsu Binary"]) from skimage.filter import gaussian_filter blurred_image = gaussian_filter(gray_image,sigma=20) show_images(images=[gray_image,blurred_image],titles=["Gray Image","20 Sigma Blur"])
總結(jié)
以上就是本文關(guān)于python實(shí)現(xiàn)圖片處理和特征提取詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
在Python web中實(shí)現(xiàn)驗(yàn)證碼圖片代碼分享
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Python使用PySimpleGUI打造輕量級(jí)計(jì)算器
PySimpleGUI是一個(gè)跨平臺(tái)的Python GUI庫(kù),它支持Windows、Mac和Linux等多種操作系統(tǒng),本文將利用PySimpleGUI打造一個(gè)輕量級(jí)計(jì)算器,希望對(duì)大家有所幫助2024-03-03對(duì)pyqt5中QTabWidget的相關(guān)操作詳解
今天小編就為大家分享一篇對(duì)pyqt5中QTabWidget的相關(guān)操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python實(shí)現(xiàn)Youku視頻批量下載功能
前段時(shí)間由于收集視頻數(shù)據(jù)的需要,自己搗鼓了一個(gè)YouKu視頻批量下載的程序。下面小編把實(shí)現(xiàn)過程分享到腳本之家平臺(tái),供大家參考2017-03-03Python實(shí)現(xiàn)接口下載json文件并指定文件名稱
在 Web 開發(fā)中,提供文件下載功能是一種常見的需求,尤其是當(dāng)涉及到導(dǎo)出數(shù)據(jù)為 JSON 格式時(shí),為了確保文件名的自定義以及避免亂碼問題,開發(fā)者需要采取一些特定的措施,本文介紹了Python實(shí)現(xiàn)接口下載json文件并指定文件名稱,需要的朋友可以參考下2024-10-10Python數(shù)據(jù)結(jié)構(gòu)之單鏈表詳解
這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)結(jié)構(gòu)之單鏈表的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Python 用__new__方法實(shí)現(xiàn)單例的操作
這篇文章主要介紹了Python 用__new__方法實(shí)現(xiàn)單例的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12