99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀python實現(xiàn)圖片處理和特征提取詳解
python實現(xiàn)圖片處理和特征提取詳解
2018-01-22
收藏

python實現(xiàn)圖片處理和特征提取詳解

這是一張靈異事件圖。。。開個玩笑,這就是一張普通的圖片。

毫無疑問,上面的那副圖畫看起來像一幅電腦背景圖片。這些都?xì)w功于我的妹妹,她能夠?qū)⒁恍┛瓷先テ婀值臇|西變得十分吸引眼球。然而,我們生活在數(shù)字圖片的年代,我們也很少去想這些圖片是在怎么存儲在存儲器上的或者去想這些圖片是如何通過各種變化生成的。

在這篇文章中,我將帶著你了解一些基本的圖片特征處理。data massaging 依然是一樣的:特征提取,但是這里我們還需要對跟多的密集數(shù)據(jù)進(jìn)行處理,但同時數(shù)據(jù)清理是在數(shù)據(jù)庫、表、文本等中進(jìn)行。這是如何對圖片進(jìn)行處理的呢?我們將看到圖片是怎么存儲在硬盤中的,同時我們可以通過使用基本的操作來處理圖片。
導(dǎo)入圖片

python中導(dǎo)入圖片是非常容易的。下面的代碼就是python如何導(dǎo)入代碼的:

代碼解釋:

這幅圖片有一些顏色和許多像素組成,為了形象這幅圖片是如何存儲的,把每一個像素想象成矩陣中的每一個元素?,F(xiàn)在這些元素包含三個不同的密度信息,分別為顏色紅、綠、藍(lán)(RGB)。所以一個RGB的圖片就變成了三維的矩陣。每一個數(shù)字就是顏色的密度(RGB)

讓我們來看看一些轉(zhuǎn)化:

就像你在上面看到的一樣,我們對三個顏色維度進(jìn)行了一些操作轉(zhuǎn)變。黃色不是一種直接表示的顏色,它是紅色和綠色的組合色。我們通過設(shè)置其他顏色密度值為零而得到了這些變化。

將圖像轉(zhuǎn)換為二維矩陣

處理圖像的三維色有時可能是很復(fù)雜和冗余的。如果我們壓縮圖像為二維矩陣,在特征提取后,它將變得更簡單。這是通過灰度圖像或二值化(Binarizing)圖像。當(dāng)圖片顯示為不同灰色強(qiáng)度組合時灰度圖像比二值化(Binarizing)圖像顏色更加飽滿,而二值化(binarzing)只是簡單的構(gòu)建一個充滿0和1的二維矩陣而已。

這里將叫你如何將RGB圖片轉(zhuǎn)變成灰度圖像:

就如你所見,圖片的維度已經(jīng)降為了兩種灰度值了,然而圖片的特征在兩幅圖片中依然清晰可見。這就是為什么灰色圖像在硬盤上存貯更加節(jié)約空間。

現(xiàn)在讓我們來二值化灰色圖像,這是通過找到閥值和灰色度像素標(biāo)志(flagging the pixels of Grayscale)。在這篇文章中我已經(jīng)通過Otsu‘s方法來找到閥值的,Otsu‘s方法是通過最大化兩類不同像素點之間的距離來計算最優(yōu)閥值的,也就是說這個閥值最小化了同類間的變量值。

模糊化圖片

本文最后部分我們將介紹更多有關(guān)特征提取的內(nèi)容:圖像模糊。灰度或二值圖像有時需要捕獲更多的圖像而模糊圖像在這樣的場景下是非常方便的。例如,在這張圖片如果鐵路軌道比鞋子更加重要,模糊處理將會添加跟多的值。從這個例子中我們對模糊處理變得更清晰。模糊算法需要將鄰近像素的加權(quán)平均值加到周圍每個顏色像素中。下面是一個模糊處理的例子:

對上面的照片模糊處理后,我們清楚地看到鞋已經(jīng)與鐵路軌道具有相同的密度等級。因此,在許多場景中這種技術(shù)非常方便。
讓我們看一個實際例子。我們想在一個小鎮(zhèn)的照片上統(tǒng)計的人數(shù)。但是照片上還有一些建筑圖像。現(xiàn)在建筑背后的人的顏色強(qiáng)度會低于建筑本身。因此,這些人我們就難以計數(shù)。模糊處理場景后才能平衡建筑和人在圖像中的顏色強(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實現(xiàn)圖片處理和特征提取詳解的全部內(nèi)容,希望對大家有所幫助

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }