python實現(xiàn)圖片處理和特征提取詳解
這是一張靈異事件圖。。。開個玩笑,這就是一張普通的圖片。
毫無疑問,上面的那副圖畫看起來像一幅電腦背景圖片。這些都歸功于我的妹妹,她能夠?qū)⒁恍┛瓷先テ婀值臇|西變得十分吸引眼球。然而,我們生活在數(shù)字圖片的年代,我們也很少去想這些圖片是在怎么存儲在存儲器上的或者去想這些圖片是如何通過各種變化生成的。
在這篇文章中,我將帶著你了解一些基本的圖片特征處理。data massaging 依然是一樣的:特征提取,但是這里我們還需要對跟多的密集數(shù)據(jù)進行處理,但同時數(shù)據(jù)清理是在數(shù)據(jù)庫、表、文本等中進行。這是如何對圖片進行處理的呢?我們將看到圖片是怎么存儲在硬盤中的,同時我們可以通過使用基本的操作來處理圖片。
導入圖片
在python中導入圖片是非常容易的。下面的代碼就是python如何導入代碼的:
代碼解釋:
這幅圖片有一些顏色和許多像素組成,為了形象這幅圖片是如何存儲的,把每一個像素想象成矩陣中的每一個元素。現(xiàn)在這些元素包含三個不同的密度信息,分別為顏色紅、綠、藍(RGB)。所以一個RGB的圖片就變成了三維的矩陣。每一個數(shù)字就是顏色的密度(RGB)
讓我們來看看一些轉(zhuǎn)化:
就像你在上面看到的一樣,我們對三個顏色維度進行了一些操作轉(zhuǎn)變。黃色不是一種直接表示的顏色,它是紅色和綠色的組合色。我們通過設置其他顏色密度值為零而得到了這些變化。
將圖像轉(zhuǎn)換為二維矩陣
處理圖像的三維色有時可能是很復雜和冗余的。如果我們壓縮圖像為二維矩陣,在特征提取后,它將變得更簡單。這是通過灰度圖像或二值化(Binarizing)圖像。當圖片顯示為不同灰色強度組合時灰度圖像比二值化(Binarizing)圖像顏色更加飽滿,而二值化(binarzing)只是簡單的構(gòu)建一個充滿0和1的二維矩陣而已。
這里將叫你如何將RGB圖片轉(zhuǎn)變成灰度圖像:
就如你所見,圖片的維度已經(jīng)降為了兩種灰度值了,然而圖片的特征在兩幅圖片中依然清晰可見。這就是為什么灰色圖像在硬盤上存貯更加節(jié)約空間。
現(xiàn)在讓我們來二值化灰色圖像,這是通過找到閥值和灰色度像素標志(flagging the pixels of Grayscale)。在這篇文章中我已經(jīng)通過Otsu‘s方法來找到閥值的,Otsu‘s方法是通過最大化兩類不同像素點之間的距離來計算最優(yōu)閥值的,也就是說這個閥值最小化了同類間的變量值。
模糊化圖片
本文最后部分我們將介紹更多有關特征提取的內(nèi)容:圖像模糊?;叶然蚨祱D像有時需要捕獲更多的圖像而模糊圖像在這樣的場景下是非常方便的。例如,在這張圖片如果鐵路軌道比鞋子更加重要,模糊處理將會添加跟多的值。從這個例子中我們對模糊處理變得更清晰。模糊算法需要將鄰近像素的加權(quán)平均值加到周圍每個顏色像素中。下面是一個模糊處理的例子:
對上面的照片模糊處理后,我們清楚地看到鞋已經(jīng)與鐵路軌道具有相同的密度等級。因此,在許多場景中這種技術(shù)非常方便。
讓我們看一個實際例子。我們想在一個小鎮(zhèn)的照片上統(tǒng)計的人數(shù)。但是照片上還有一些建筑圖像。現(xiàn)在建筑背后的人的顏色強度會低于建筑本身。因此,這些人我們就難以計數(shù)。模糊處理場景后才能平衡建筑和人在圖像中的顏色強度。
完整的代碼:
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é)
以上就是本文關于python實現(xiàn)圖片處理和特征提取詳解的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關文章
Python實現(xiàn)接口下載json文件并指定文件名稱
在 Web 開發(fā)中,提供文件下載功能是一種常見的需求,尤其是當涉及到導出數(shù)據(jù)為 JSON 格式時,為了確保文件名的自定義以及避免亂碼問題,開發(fā)者需要采取一些特定的措施,本文介紹了Python實現(xiàn)接口下載json文件并指定文件名稱,需要的朋友可以參考下2024-10-10Python數(shù)據(jù)結(jié)構(gòu)之單鏈表詳解
這篇文章主要為大家詳細介紹了Python數(shù)據(jù)結(jié)構(gòu)之單鏈表的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09Python 用__new__方法實現(xiàn)單例的操作
這篇文章主要介紹了Python 用__new__方法實現(xiàn)單例的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12