這是一張靈異事件圖。。。開個玩笑,這就是一張普通的圖片。
毫無疑問,上面的那副圖畫看起來像一幅電腦背景圖片。這些都歸功于我的妹妹,她能夠將一些看上去奇怪的東西變得十分吸引眼球。然而,我們生活在數字圖片的年代,我們也很少去想這些圖片是在怎么存儲在存儲器上的或者去想這些圖片是如何通過各種變化生成的。
在這篇文章中,我將帶著你了解一些基本的圖片特征處理。data massaging 依然是一樣的:特征提取,但是這里我們還需要對跟多的密集數據進行處理,但同時數據清理是在數據庫、表、文本等中進行。這是如何對圖片進行處理的呢?我們將看到圖片是怎么存儲在硬盤中的,同時我們可以通過使用基本的操作來處理圖片。
導入圖片
在python中導入圖片是非常容易的。下面的代碼就是python如何導入代碼的:
代碼解釋:
這幅圖片有一些顏色和許多像素組成,為了形象這幅圖片是如何存儲的,把每一個像素想象成矩陣中的每一個元素。現在這些元素包含三個不同的密度信息,分別為顏色紅、綠、藍(RGB)。所以一個RGB的圖片就變成了三維的矩陣。每一個數字就是顏色的密度(RGB)
讓我們來看看一些轉化:
就像你在上面看到的一樣,我們對三個顏色維度進行了一些操作轉變。黃色不是一種直接表示的顏色,它是紅色和綠色的組合色。我們通過設置其他顏色密度值為零而得到了這些變化。
將圖像轉換為二維矩陣
處理圖像的三維色有時可能是很復雜和冗余的。如果我們壓縮圖像為二維矩陣,在特征提取后,它將變得更簡單。這是通過灰度圖像或二值化(Binarizing)圖像。當圖片顯示為不同灰色強度組合時灰度圖像比二值化(Binarizing)圖像顏色更加飽滿,而二值化(binarzing)只是簡單的構建一個充滿0和1的二維矩陣而已。
這里將叫你如何將RGB圖片轉變成灰度圖像:
就如你所見,圖片的維度已經降為了兩種灰度值了,然而圖片的特征在兩幅圖片中依然清晰可見。這就是為什么灰色圖像在硬盤上存貯更加節約空間。
現在讓我們來二值化灰色圖像,這是通過找到閥值和灰色度像素標志(flagging the pixels of Grayscale)。在這篇文章中我已經通過Otsu‘s方法來找到閥值的,Otsu‘s方法是通過最大化兩類不同像素點之間的距離來計算最優閥值的,也就是說這個閥值最小化了同類間的變量值。
模糊化圖片
本文最后部分我們將介紹更多有關特征提取的內容:圖像模糊。灰度或二值圖像有時需要捕獲更多的圖像而模糊圖像在這樣的場景下是非常方便的。例如,在這張圖片如果鐵路軌道比鞋子更加重要,模糊處理將會添加跟多的值。從這個例子中我們對模糊處理變得更清晰。模糊算法需要將鄰近像素的加權平均值加到周圍每個顏色像素中。下面是一個模糊處理的例子:
對上面的照片模糊處理后,我們清楚地看到鞋已經與鐵路軌道具有相同的密度等級。因此,在許多場景中這種技術非常方便。
讓我們看一個實際例子。我們想在一個小鎮的照片上統計的人數。但是照片上還有一些建筑圖像。現在建筑背后的人的顏色強度會低于建筑本身。因此,這些人我們就難以計數。模糊處理場景后才能平衡建筑和人在圖像中的顏色強度。
完整的代碼:
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"])
總結
以上就是本文關于python實現圖片處理和特征提取詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:
python圖像常規操作
在Python web中實現驗證碼圖片代碼分享
Python生成數字圖片代碼分享
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
