内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

包含python梯度函數(shù)展示的詞條

圖像分析:邊緣檢測中的梯度算子

邊緣檢測 是基于邊界的圖像分割方法的第一步,邊緣就是兩個不同的相鄰區(qū)域之間 灰度值 不連續(xù)或者突變的地方。因此,檢測邊緣就是,檢測灰度明顯變化的地方。而邊緣位置處灰度的明顯變化是可以借助計算灰度的微分來檢測的。一般使用一階微分和二階微分檢測邊緣,在邊緣位置,一階微分的幅度值會有局部極值,二階微分的幅度值會出現(xiàn)過零點。本文主要介紹邊緣檢測中的一階微分算子----梯度算子,包括Roberts、Prewitt和Sobel三種算子。

成都創(chuàng)新互聯(lián)是專業(yè)的磐安網(wǎng)站建設(shè)公司,磐安接單;提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行磐安網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

想要計算梯度圖,就要設(shè)計模板卷積,首先要搞明白圖像在計算時的坐標(biāo)系,很多博文對應(yīng)的模板和坐標(biāo)系都不匹配,我們在后面的卷積操作中主要使用計算坐標(biāo)系。

左圖Cameraman所用的坐標(biāo)系統(tǒng),常用在圖像計算中。其坐標(biāo)原點在左上角,x軸是水平的,并且向右延伸;y是垂直的,并且向下延伸。 既可以代表這幅圖像,也可以表示 坐標(biāo)處像素的值。

右圖Lena的坐標(biāo)系統(tǒng),常用在屏幕顯示中,因為屏幕掃描是從左向右,從上向下進(jìn)行的,原點在圖像的左上角,縱軸標(biāo)記圖像的行,橫軸標(biāo)記圖像的列。 既可以代表這個圖像,也可以代表 行列交點處的圖像值。

首先我們要知道的是梯度是一個向量,向量的話有方向和大小,梯度方向指向函數(shù)變化最快的方向,大小就是它的模,也是最大的變化率。對于二元函數(shù) ,它在點 的梯度就是 , 或者 ,就是:

其中, ,這個梯度向量的幅度和方向角為

下圖展示了一個灰度圖的數(shù)學(xué)化表達(dá),像素點 的灰度值是 ,它有八個鄰域。

圖像在點 的梯度為

其中

即 對應(yīng)圖像的水平方向, 即 對應(yīng)水圖像的豎直方向。

要理解梯度圖的生成,就要先了解模板卷積的過程。

模板卷積是模板運算的一種方式,其步驟如下:

(1)將模板在輸入圖像中漫游,并將模板中心與圖像中某個像素位置重合;

(2)將模板上各個系數(shù)與模板下各對應(yīng)像素的灰度相乘;

(3)將所有乘積相加(為保持灰度范圍,常將結(jié)果再除以模板系數(shù)之和,后面梯度算子模板和為0的話就不需要除了);

(4)將上述運算結(jié)果(模板的響應(yīng)輸出)賦給輸出圖像中對應(yīng)模板中心位置的像素。

其實梯度圖生成前面和模板卷積相同,不同的是要生成梯度圖,還需要在模板卷積完成后計算在點 梯度的幅值,將幅值作為像素值,這樣才算完。 。

下圖是生成梯度圖用到的的水平模板和豎直模板:

例如,如果只想生成水平方向的梯度圖,那么只計算水平方向的梯度 ,則梯度圖上對應(yīng)點 的灰度值就是

一般是水平方向的 和豎直方向的 各用一個模板,然后結(jié)合,那么得到梯度圖在點 的灰度值就是

它就是我們上面說到的梯度的幅值,是以計算以2為范數(shù),對應(yīng)歐式距離,由于涉及平方和開方運算,計算量比較大。(怎么簡化計算呢??換一種近似計算方式吧?。。。?/p>

在真實的梯度圖輸出計算中,采用以1為范數(shù)(對應(yīng)城區(qū)距離)的簡單計算方式,即

另一種簡單的方式是以 為范數(shù)(對應(yīng)棋盤距離),即

首先了解下梯度算子的設(shè)計,一般是水平方向和豎直方向,水平方向模板轉(zhuǎn)置再對折就是豎直方向。

其本質(zhì)是一個對角線方向的梯度算子,對應(yīng)的水平方向和豎直方向的梯度分別為

輸出梯度圖在 的灰度值為

優(yōu)點:邊緣定位較準(zhǔn)

缺點:(1)沒有描述水平和豎直方向的灰度變化,只關(guān)注了對角線方向,容易造成遺漏。(2)魯棒性差。由于 點本身參加了梯度計算,不能有效的抑制噪聲的干擾。

適用于邊緣明顯且噪聲較少的圖像。

Prewitt算子是典型的 模板,其模板中心對應(yīng)要求梯度的原圖像坐標(biāo) , 對應(yīng)的8-鄰域的像素灰度值如下表所示:

通過Prewitt算子的水平模板 卷積后,對應(yīng)的水平方向梯度為

通過Prewitt算子的豎直模板 卷積后,對應(yīng)的豎直方向梯度為

輸出梯度圖在 的灰度值為

Prewitt算子引入了類似局部平均的運算,對噪聲具有平滑作用,較Roberts算子更能抑制噪聲。

通過Prewitt算子的水平模板 卷積后,對應(yīng)的水平方向梯度為

通過Prewitt算子的豎直模板 卷積后,對應(yīng)的豎直方向梯度為

輸出梯度圖在 的灰度值為

Sobel算子引入了類似局部加權(quán)平均的運算,對邊緣的定位比要比Prewitt算子好。

Python 調(diào)用OpenCV接口實現(xiàn)Sobel算子邊緣檢測

OpenCV-Python系列四:圖像分割(2)--梯度

上一期提到的圖像閾值處理,不僅可以實現(xiàn)獲取你想要的目標(biāo)區(qū)域(作為mask使用),還可以幫你獲取圖像的邊緣信息,那關(guān)于圖像邊緣,本期將從另外的角度來處理。

對邊緣信息與背景差異較大的場景,你也可以使用threshold分割,不過若閾值不好選取,Laplacian梯度算子就不失為一直嘗試方案,而且上網(wǎng)看看,關(guān)于Laplacian算子還可以用來判斷圖像的模糊程度,這個在相機(jī)的自動對焦當(dāng)中,是否可以嘗試判斷下?

不過處理的效果并不理想,圖像低灰階部分邊緣信息丟失嚴(yán)重。

對于sobel,laplacian算子我們可以使用cv2.filter2D()來實現(xiàn),配置相應(yīng)的核模板即可,如實現(xiàn)提取水平方向邊緣信息:

你可以依據(jù)實際的應(yīng)用需求來配置提取邊緣的角度信息,這里以45度角(垂直向下逆時針旋轉(zhuǎn)45度)為例:

對此,你可以采用下面的方式來解決:

Python怎么做最優(yōu)化

一、概觀scipy中的optimize子包中提供了常用的最優(yōu)化算法函數(shù)實現(xiàn)。我們可以直接調(diào)用這些函數(shù)完成我們的優(yōu)化問題。optimize中函數(shù)最典型的特點就是能夠從函數(shù)名稱上看出是使用了什么算法。下面optimize包中函數(shù)的概覽:1.非線性最優(yōu)化fmin -- 簡單Nelder-Mead算法fmin_powell -- 改進(jìn)型Powell法fmin_bfgs -- 擬Newton法fmin_cg -- 非線性共軛梯度法fmin_ncg -- 線性搜索Newton共軛梯度法leastsq -- 最小二乘2.有約束的多元函數(shù)問題fmin_l_bfgs_b ---使用L-BFGS-B算法fmin_tnc ---梯度信息fmin_cobyla ---線性逼近fmin_slsqp ---序列最小二乘法nnls ---解|| Ax - b ||_2 for x=03.全局優(yōu)化anneal ---模擬退火算法brute --強(qiáng)力法4.標(biāo)量函數(shù)fminboundbrentgoldenbracket5.擬合curve_fit-- 使用非線性最小二乘法擬合6.標(biāo)量函數(shù)求根brentq ---classic Brent (1973)brenth ---A variation on the classic Brent(1980)ridder ---Ridder是提出這個算法的人名bisect ---二分法newton ---牛頓法fixed_point7.多維函數(shù)求根fsolve ---通用broyden1 ---Broyden’s first Jacobian approximation.broyden2 ---Broyden’s second Jacobian approximationnewton_krylov ---Krylov approximation for inverse Jacobiananderson ---extended Anderson mixingexcitingmixing ---tuned diagonal Jacobian approximationlinearmixing ---scalar Jacobian approximationdiagbroyden ---diagonal Broyden Jacobian approximation8.實用函數(shù)line_search ---找到滿足強(qiáng)Wolfe的alpha值check_grad ---通過和前向有限差分逼近比較檢查梯度函數(shù)的正確性二、實戰(zhàn)非線性最優(yōu)化fmin完整的調(diào)用形式是:fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None)不過我們最常使用的就是前兩個參數(shù)。一個描述優(yōu)化問題的函數(shù)以及初值。后面的那些參數(shù)我們也很容易理解。如果您能用到,請自己研究。下面研究一個最簡單的問題,來感受這個函數(shù)的使用方法:f(x)=x**2-4*x+8,我們知道,這個函數(shù)的最小值是4,在x=2的時候取到。from scipy.optimize import fmin #引入優(yōu)化包def myfunc(x):return x**2-4*x+8 #定義函數(shù)x0 = [1.3] #猜一個初值xopt = fmin(myfunc, x0) #求解print xopt #打印結(jié)果運行之后,給出的結(jié)果是:Optimization terminated successfully.Current function value: 4.000000Iterations: 16Function evaluations: 32[ 2.00001953]程序準(zhǔn)確的計算得出了最小值,不過最小值點并不是嚴(yán)格的2,這應(yīng)該是由二進(jìn)制機(jī)器編碼誤差造成的。除了fmin_ncg必須提供梯度信息外,其他幾個函數(shù)的調(diào)用大同小異,完全類似。我們不妨做一個對比:from scipy.optimize import fmin,fmin_powell,fmin_bfgs,fmin_cgdef myfunc(x):return x**2-4*x+8x0 = [1.3]xopt1 = fmin(myfunc, x0)print xopt1printxopt2 = fmin_powell(myfunc, x0)print xopt2printxopt3 = fmin_bfgs(myfunc, x0)print xopt3printxopt4 = fmin_cg(myfunc,x0)print xopt4給出的結(jié)果是:Optimization terminated successfully.Current function value: 4.000000Iterations: 16Function evaluations: 32[ 2.00001953]Optimization terminated successfully.Current function value: 4.000000Iterations: 2Function evaluations: 531.99999999997Optimization terminated successfully.Current function value: 4.000000Iterations: 2Function evaluations: 12Gradient evaluations: 4[ 2.00000001]Optimization terminated successfully.Current function value: 4.000000Iterations: 2Function evaluations: 15Gradient evaluations: 5[ 2.]我們可以根據(jù)給出的消息直觀的判斷算法的執(zhí)行情況。每一種算法數(shù)學(xué)上的問題,請自己看書學(xué)習(xí)。個人感覺,如果不是純研究數(shù)學(xué)的工作,沒必要搞清楚那些推導(dǎo)以及定理云云。不過,必須了解每一種算法的優(yōu)劣以及能力所及。在使用的時候,不妨多種算法都使用一下,看看效果分別如何,同時,還可以互相印證算法失效的問題。在from scipy.optimize import fmin之后,就可以使用help(fmin)來查看fmin的幫助信息了。幫助信息中沒有例子,但是給出了每一個參數(shù)的含義說明,這是調(diào)用函數(shù)時候的最有價值參考。有源碼研究癖好的,或者當(dāng)你需要改進(jìn)這些已經(jīng)實現(xiàn)的算法的時候,可能需要查看optimize中的每種算法的源代碼。在這里:https:/ / github. com/scipy/scipy/blob/master/scipy/optimize/optimize.py聰明的你肯定發(fā)現(xiàn)了,順著這個鏈接往上一級、再往上一級,你會找到scipy的幾乎所有源碼!

Python 高階函數(shù)的使用

1. Python有哪些高階函數(shù),功能分別是什么

Python有三大高階函數(shù),分別是 map 、 reduce 、 filter 函數(shù)。

2. map高階函數(shù)

map函數(shù)有兩個參數(shù),第一個參數(shù)要求傳遞一個函數(shù)對象,第二個參數(shù)要求傳遞一個可迭代序列。直接看案例

運行結(jié)果:

3. reduce高階函數(shù)

reduce高階函數(shù)位于functools模塊中,使用前需要先進(jìn)行導(dǎo)入。reduce高階函數(shù)可以有三個參數(shù),第一個參數(shù)要求傳遞一個函數(shù)對象(必傳),第二個參數(shù)要求傳遞一個可迭代序列(必傳),第三個函數(shù)是一個初始值(不必傳,可以有默認(rèn)值)。直接看案例

運行結(jié)果:

4. filter高階函數(shù)

filter高階函數(shù)有兩個參數(shù),第一個參數(shù)是一個函數(shù)對象,第二個參數(shù)是一個可迭代序列。直接看案例

運行結(jié)果:

當(dāng)前題目:包含python梯度函數(shù)展示的詞條
網(wǎng)頁地址:http://m.rwnh.cn/article2/hiidoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗網(wǎng)站設(shè)計、微信小程序、全網(wǎng)營銷推廣、網(wǎng)站排名、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
逊克县| 宁晋县| 花莲市| 玉林市| 亚东县| 紫金县| 隆尧县| 城固县| 定西市| 上思县| 贵阳市| 高要市| 和林格尔县| 克山县| 滁州市| 临安市| 鞍山市| 土默特右旗| 新巴尔虎左旗| 蒙自县| 龙泉市| 轮台县| 浑源县| 凤城市| 衡东县| 卢氏县| 若羌县| 正宁县| 永川市| 拜泉县| 星子县| 高邑县| 屏山县| 亚东县| 互助| 若尔盖县| 卢氏县| 年辖:市辖区| 绥芬河市| 榆中县| 滁州市|