當前位置:首頁 » 操作系統 » 圖像LR演算法

圖像LR演算法

發布時間: 2022-11-21 03:49:25

1. LR分析法的LR(0)分析表的構造

顧名思義,LR(0)分析就是LR(K)分析當K=0的情況,亦即在分析的每一步,只要根據當前的棧頂狀態 (或者說根據當前分析棧中已移進或歸約出的全部文法符號)就能確定應採取何種分析動作,而無須向前查看輸入符號。
為了給出構造LR分析表的演算法,我們首先需要引入一些非常重要的概念和術語。 由例4?6對輸入串「a,b,a」的分析過程容易看出,如果所分析的輸入串沒有語法錯誤,則在分析的每一步,若將分析棧中已移進和歸約出的全部文法符號與余留的輸入符號串拼接起來,就形成了所給文法的一個規范句型。換言之,也就是在分析的每一步,如輸入串已被掃視的部分無語法錯誤,則當前分析棧中的全部文法符號應當是某一規范句型的前綴。而且還不難看出,此種規范句型的前綴決不會含有句柄右邊的任何符號,這是因為一旦句型的句柄在棧的頂部形成,將會立即被歸約之故。以後,我們將把規范句型具有上述性質 (即不含句柄之右的任何符號)的前綴稱為它的活前綴。例如,對於文法G[L]的規范句型「E,b,a」 (見表412分析過程第5步),其句柄為「b」,棧中的符號串為「E,b」,此句型的活前綴為ε,「E」,「E,」,「E,b」等。
由此可見,一個LR分析器的工作過程,實質上也就是一個逐步產生 (或識別)所給文法的規范句型之活前綴的過程。同時,在分析的每一步,分析棧中的全部文法符號 (如果輸入串無語法錯誤)應是當前規范句型的活前綴,並且與此時的棧頂狀態相關聯。因此,我們自然會想到,如果能構造一個識別所給文法的所有活前綴的有限自動機,那麼就能很方便地構造出相應的LR分析表來。稍後我們將討論這一問題。 上面我們已經說過,在一個規范句型的活前綴中決不含有句柄右邊的任何符號。因此,活前綴與句柄的關系不外下述三種情況:
(1) 其中已含有句柄的全部符號 (句柄的最右符號即為活前綴的最右符號);
(2) 其中只含句柄的一部分符號 (句柄開頭的若干符號與活前綴最右的若干個符號一致);
(3) 其中全然不含有句柄的任何符號。
第一種情況表明,此時某一產生式A→β的右部符號串β已出現在棧頂,因此相應的分析動作應是用此產生式進行歸約。第二種情況意味著形如A→β1β2的產生式的右部子串β1已出現於棧頂,正期待著從余留輸入串中看到能由β2推出的符號串。而第三種情況則意味著期望從余留輸入串中能看到由某一產生式A→α的右部,即α所推出的符號串。為了刻畫在分析過程中,文法的一個產生式右部符號串已有多大一部分被識別,我們可在該產生式的右部的某處加上一個圓點「·」來指示位置。例如,對於上述三種情況,標有圓點的產生式分別為A→β·,A→β1·β2以及A→·α。我們把右部某位置上標有圓點的產生式稱為相應文法的一個LR(0)項目。特別,對形如A→ε的產生式,相應的LR(0)項目為A→·。顯然,不同的LR(0)項目反映了分析過程中棧頂的不同情況。下面我們就會看到,文法的全部LR(0)項目,將是構造識別其全部活前綴的有限自動機的基礎。 在作出文法的全部LR(0)項目之後,現在用它們來構造識別全部活前綴的DFA。這種DFA的每一個狀態由若干個LK(0)項目所組成的集合 (稱為項目集)來表示。下面以例4?7所給出的文法為例來說明構造此種DFA的方法。
首先,我們用I0表示這個DFA的初態,它預示著分析過程的開始,並且期待著將給定的輸入符號串逐步歸約為文法的開始符號S′。或者反過來說,我們所期待的是,從使用產生式S′→S開始,能夠逐步推導出所給的輸入符號串。因此,我們應將項目S′→·S列入狀態I0中。換言之,也就是我們期待著將要掃視的輸入串正好就是能由S推出的任何終結符號串。然而,由於不能從輸入串中直接讀出非終結符號S,因此我們也應當把項目S→·A以及S→·B列入到I0中。由於A和B同樣是非終結符號,所以又應當將A→·aAb,A→·c和B→·aBb,B→·d列入I0中。由於最後列入I0的項目中,圓點之後都是終結符號,故I0已經「封閉」,構造項目集I0宣告結束。這樣,表示初態的項目集I0由如下的項目組成:
I0: S′→·SS→·AA→·aAb
S→·BB→·aBbB→·d
A→·c
我們將項目S′→·S稱為項目集I0的基本項目。上述從項目S′→·S出發構造項目集I0的過程,可用一個對其基本項目集{S′→·S}的閉包運算,即CLOSURE({S′→·S})來表示。一般地,設I為一項目集,則構造I的閉包CLOSURE(I)的演算法如下:
(1) I中每一項目都屬於CLOSURE(I);
(2) 若形如A→α·Xβ的項目屬於CLOSURE(I),且X為非終結符號,則文法中任何X產生式的一切圓點在最左邊的項目X→·γ也都屬於CLOSURE(I);
(3) 重復上述過程,直至不再有新的項目加入CLOSURE(I)為止。
有了初態I0之後,我們來說明如何確定從I0可能轉移到的下一個狀態。設X為一個文法符號 (終結符號或非終結符號),若I0中有圓點位於X左邊的項目A→α·Xβ (其中α可以為ε),則當分析器從輸入串識別出 (即移進或歸約出)文法符號X後,分析器將進入它的下一個狀態。設此狀態為Ii,顯然Ii中必含有全部形如A→αX·β的項目,我們將這樣的項目稱為A→α·Xβ的後繼項目。對於每一文法符號X,如果存在這樣的後繼項目,則可能不止一個,設其組成的集合為J,J中的每個項目也就是項目集Ii的基本項目。因此,按照與上面構造項目集I0相類似的討論,我們就有
Ii=CLOSURE(J)
為了指明Ii是「I0關於文法符號X的後繼狀態」這一事實,我們可定義一個狀態轉移函數
GO(I,X)=CLOSURE(J)
其中,I為當前狀態,X為文法符號,J為I中所有形如A→α·Xβ的項目的後繼項目所組成的集合,而CLOSURE(J)就是項目集I (即狀態I)關於X的後繼項目集 (即後繼狀態)。例如,對於上例,我們有:
I1=GO(I0,S)=CLOSURE({S′→S·})={S′→S·}
I2=GO(I0,A)=CLOSURE({S→A·})={S→A·}
I3=GO(I0,B)=CLOSURE({S→B·})={S→B·}
I4=GO(I0,a)=CLOSURE({A→a·Ab,B→a·Bb})=
{A→a·Ab, B→a·Bb, A→·aAb, B→·aBb, A→·c, B→·d}
I5=GO(I0,c)=CLOSURE({A→c·})={A→c·}
I6=GO(I0,d)=CLOSURE({B→d·})={B→d·}
請注意,由於I0中無圓點在b之前的項目,故GO(I0,b)無定義。這樣,我們求出了I0的全部後繼項目集I1,I2,I3,I4,I5,I6。容易看出,由於I1,I2,I3,I5,I6諸項目集中的項目均無後繼項目,因此它們都沒有後繼狀態。對於項目集I4,我們再仿此求出它的後繼狀態,這些後繼狀態是:
I7=GO(I4,A)=CLOSURE({A→aA·b})={A→aA·b}
I9=GO(I4,B)=CLOSURE({B→aB·b})={B→aB·b}
此外,由於
GO(I4,a)=I4GO(I4,c)=I5GO(I4,d)=I6
故它們均不產生新的項目集。最後,再求出I7,I9的後繼項目集。它們分別是
I8=GO(I7,b)=CLOSURE({A→aAb·})={A→aAb·}
I10=GO(I9,b)=CLOSURE({B→aBb·})={B→aBb·}
由於I8和I10已無後繼項目集,所以至此我們已求出所給文法G[S]的全部項目集I0~I10,通常,我們將這些項目集的全體稱為文法G[S]的LR(0)項目集規范族,並記為
C={I0,I1,I2,I3,…,I10}
於是,我們所要構造的識別文法G[S]全部活前綴的DFA為
M=(C,V,GO,I0,C)
其中: M的狀態集也就是文法的LR(0)項目集規范族C={I0,I1,…,I10};
M的字母表也就是文法的字匯表V={S′,S,A,B,a,b,c,d};
M的映像也就是如上定義的狀態轉換函數GO;
M的終態集也是C,這表明M的每一狀態都是它的終態。
對於上述文法G[S],如上構造的識別其全部活前綴的DFA的狀態轉換圖如圖416所示。
由於狀態轉換圖416中的每一個狀態都是終態,因此在上述DFA工作的過程中,從初態I0出發,沿著有向邊所指示的方向前進,可以使DFA在所經歷的任何狀態上中止它的工作。當DFA到達某一狀態時,我們把從初態I0出發,到達該狀態所經過的全部有向邊上的標記符號依次連接起來,就得到了DFA在到達該狀態時,所識別出的某規范句型的一個活前綴。例如:當上述DFA處於初態I0時,它所識別的活前綴為ε;當M處於狀態I3時,它所識別的活前綴為B;當M處於I4時,它所識別的活前綴為aa*;而達到I9時,它所識別的活前綴為aa*B等等。需要注意的是,對那些只含有歸約項目的項目集,即M的I1,I2,I3,I5,I6,I8和I10,當M到達這些狀態時,表明活前綴中已含有相應句柄的全部符號 (即句柄已在棧頂形成),因此,我們將這些狀態稱為句柄識別狀態。特別是當M處於狀態I1時,M所識別的活前綴為S,這意味著已將所給的輸入串歸約為S,如果再按產生式S′→S歸約一步,就得到了拓廣文法G′的開始符號S′。因此,我們將狀態I1稱為「接受狀態」,它預示著對輸入串的分析已成功地完成。
對於一個給定文法G的拓廣文法G′,當識別它的全部活前綴的DFA作出之後,我們就可據此構造相應的LR(0)分析表了。然而,應當首先注意的是,用前述方法所構造的每一個LR(0)項目集,實質上表徵了在分析過程中可能出現的一種分析狀態;再根據前面對LR(0)項目的分類,項目集中的每一個項目又與某一種分析動作相關聯,因此,我們自然會提出這樣的要求,即每一項目集中的諸項目應當是相容的。所謂相容,是指在一個項目集中,不出現這樣的情況:
(1) 移進項目和歸約項目並存;
(2) 多個歸約項目並存。
如果一個文法G滿足上述條件,也就是它的每個LR(0)項目集中都不含沖突項目,則稱G為LR(0)文法。顯然,只有當一個文法是LR(0)文法時,才能構造出不含沖突動作的LR(0)分析表來。
從前面的討論和分析,我們將不難得出構造LR(0)分析表的演算法。為方便起見,我們用整數0,1,2,…表示狀態I0,I1,…,而且如表411那樣,也將GOTO子表中有關終結符號的各列並入ACTION子表相應的各列中去,此外,演算法中形如sj和rj等記號的含義同前,此演算法如下:
(1) 對於每個項目集Ii中形如A→α·Xβ的項目,若GO(Ii,X)=Ij,且X為一終結符號a時,置ACTION[i,a]=sj。但若X為非終結符號時,則僅置GOTO[i,X]=j。
(2) 若歸約項目A→α·屬於Ii,設A→α為文法的第j個產生式,則對文法的任何終結符號或句子的右界符# (將它們統一地記為a),置ACTION[i,a]=rj。
(3) 若接受項目S′→S·屬於Ii,則置ACTION[i,#]=acc。
(4) 在分析表中,凡不能按上述規則填入信息的元素,均置為「出錯」。

2. 12 - SVM, KNN,LR, RF簡要介紹

這里接 第11篇 的介紹。

支持向量機是可對類別進行分類的有監督的學習演算法。其在樣本的特徵空間中找出間隔最大的超平面對樣本進行分類。SVM根據其學習演算法不同可劃分為線性可分SVM、線性近似可分SVM與非線性SVM。實現上述三種SVM主要依靠核函數—線性核函數、高斯核函數、多項式核函數與Sigmoid核函數,後三種核函數為非線性,一般建議使用高斯核函數。

如上圖,對於二分類,SVM需要確定一條最優直線使兩類樣本分開,在圖1-4中A可以看到有多條直線可將兩組分開,但最優的是圖1-4中B的w*x+b=0直線。對於最優直線的確定,需要使最優直線到最近點的距離最大,最近點被稱為支持向量(如圖1-4中B的紅點/圈),這里的距離是求出點到直線的距離最大,這是在二維空間,當在三維及其以上的空間時,直線變為超平面,距離則需要求點到超平面的幾何距離(Westreich et al 2010)。

SVM的優點:(1)適用各種形式的數據,如文本、圖像等;(2)泛化能力較好,即其過擬合的風險小;(3)相對較好地處理高維度數據;(4)核函數的應用使其能很好的適應各種情況。其缺點:(1)對大規模數據難以處理;(2)只依靠少數支持向量決定最終結果,如有異常值,則結果容易出現較大偏差;(3)對缺失值敏感(Westreich et al 2010)。

K最近鄰演算法是通過計算樣本特徵之間的距離,根據距離k進行分類,屬於無參數分類和回歸方法(Altman 1992)。距離k的度量可以使用閔可夫斯基距離、歐氏距離與曼哈頓距離等距離公式進行計算,一般其取20以內的正整數,較大的k取值會降低噪音對分析的影響,且一般對於二分類問題,取k為奇數將有利於判別。

閔可夫斯基距離公式為:

上述公式中,當p=2時,變為歐氏距離,當p=1時,變為曼哈頓距離(Hechenbichler and Schliep 2004)。
KNN屬於「懶惰學習」,即只是將訓練集數據儲存起來,再來新樣本時進行距離計算,根據投票結果判別新樣本屬於哪一類。例如圖1-6,藍色方框與紅色三角為已知的訓練集,當有綠色圓圈新樣本進行判別時,假設k為1,則有兩個紅色三角與一個為藍色方框參與判別,這樣投票結果為2:1,故綠色圓圈屬於紅色三角形一類;假如k為2,則有兩個紅色三角與三個為藍色方框參與判別,這樣投票結果為2:3,故綠色圓圈屬於藍色方框。所以k值需要選擇,一般是根據經驗進行設置,並且每個樣本(如紅三角)對判別決策所佔的比重也可以進行設定即為權重KNN(Hechenbichler and Schliep 2004)。

邏輯回歸是一種有監督的學習方法,其函數基本的公式:

上述公式為Sigmoid函數,圖為1-7,其輸出值在[0, 1]之間,需要選擇一個閾值,通常是0.5,當p(x) > 0.5時,x為A類,如果p(x) < 0.5時,x為B類。閾值可以調整,其代表對於這個事情的把握度,如上述的閾值為0.5,如計算的p(x1)=0.3,則有50%的把握認為x1屬於B類(Press 2013)。
LR的運算基本過程:(1)假設p(x)=1,構造sigmoid函數,即利用最大似然取對數作為誤差函數,用梯度下降求最小的誤差函數值,求出a與b;(2)根據訓練數據集多組數據,重復循環(1)n次,計算數據集梯度,更新sigmoid參數,確定最終的sigmoid函數;(3)輸入預測集數據;(4)運用最終sigmoid函數求解分類(Dreiseitl and Ohno-Machado 2002)。
LR的優點:(1)容易接收新數據,對模型更新;(2)能夠容易解決變數間的共線性問題;(3)運算速度快,適合二分類問題。其缺點:(1)適用的數據和具體場景較少;(2)不適用於樣本具有很大的特徵值(即變數過多);(3)容易欠擬合,分類准確性較低;(4)使用前提是應變數和自變數有線性關系,只是廣義線性模型,不能處理非線性問題。

隨機森林是將多個決策樹集合在一起的一種演算法,基本單元為決策樹,並且可以用於回歸和分類(Breiman 2001, Liaw and Wiener 2002)。其名字由「隨機」與「森林」組成,「隨機」有兩個含義,一指在訓練集中隨機且有放回的抽取n個樣本進行建模,二指每個節點在特徵值M中隨機抽取k(k<M)個進行建模,且每個節點處的k應相同,這兩個隨機使該演算法不容易過擬合(Ho 1998)。「森林」即為多個決策樹組成,其要求基本同上述的決策樹,但這里的決策樹沒有剪枝的過程,讓其盡量生長(Cutler et al 2012)。其將多個決策樹組合在一起是採用集成學習方法,該演算法的中心思想是讓每個決策樹產生一個結果,再對這些結果進行統計,哪種結果數量最多,即為最終結果。

RF實現的過程(1)隨機有放回的從樣本N中選出n個子樣本;(2)每個節點在特徵值M中隨機選出k個特徵值;(3)重復第一與第二步s次,創建s個決策樹;(4)對s個決策樹結果分析,哪一類決策樹最多,則最終判別為哪一類。

RF演算法主要有兩個參數,第一個為抽取每個樣本的特徵值k,第二個為決策樹的數量。特徵值k一般建議為全部特徵值的開方(Geurts et al 2006)。在確定較優的k後,一般取決策樹數為500進行嘗試,查看隨著決策樹的數量增多,袋外錯誤率是否會穩定在一個定值,取能達到這個定值的最小決策樹數的數量。

隨機森林演算法優點:(1)能夠有效處理大數據;(2)能處理高維度變數的樣本,不需要降維;(3)能較好處理缺失值問題。其缺點:(1)不能直觀進行解釋(2)過度擬合某些具有雜訊分類。
上述的八種演算法,一般多用於二分類問題,如「有或無」與「好或壞」等,但在實際應用中也有較多的多分類問題,如彩虹可以劃分7種顏色,當判別一個新的顏色屬於這7種顏色的哪一種時,這就需要解決一個七分類問題。多分類是二分類的一個拓展,解決辦法有兩種,第一種是一對多,即先從K類中選出一種,剩餘K-1類歸為一種,這樣需要建立K個判別模型,當有新數據進行判別時,新樣本需在K個判別模型中,同時進行判別,看被判別為哪一類的可能性最大,就判別為哪類;

3. 機器視覺演算法有哪些

機器視覺演算法基本步驟;
1、圖像數據解碼
2、圖像特徵提取
3、識別圖像中目標。
機器視覺是人工智慧正在快速發展的一個分支。
簡單說來,機器視覺就是用機器代替人眼來做測量和判斷。
機器視覺系統是通過機器視覺產品(即圖像攝取裝置,分CMOS和CCD兩種)將被攝取目標轉換成圖像信號,傳送給專用的圖像處理系統,得到被攝目標的形態信息,根據像素分布和亮度、顏色等信息,轉變成數字化信號;圖像系統對這些信號進行各種運算來抽取目標的特徵,進而根據判別的結果來控制現場的設備動作。

現在做視覺檢測的公司比較多,國內國外都有,許多視覺算是很好的。
能提供完整的機器視覺軟體解決方案,也可以為客戶提供演算法級的定製,覆蓋所有的工業應用領域,適用范圍比較廣。機器視覺的應用會越來越多,因為計算的水平越來越高,可以處理更復雜的視覺演算法;其實好多的東西,包括現在流行的GPS,最早都是外國的公司在做,程序都是中國人在做外包;
光機電的應用我個人覺得已經很成熟了,不會再有新東西。

4. lr圖像大小一般調多少

lr圖像大小一般調256k就可以了。JPG前期設置准確的話,畫質一樣不錯,比較考驗人,要求前期曝光准,白平衡准,所以另一種說法是大師用JPG,菜鳥用RAW。這個要看情況。

lr圖像導出照片srgb大小介紹

機內直出JPG相當於機內壓縮,JPG是8bit,RAW一般是14bit,LR把RAW轉JPG相當於LR來壓縮,只不過LR裡面無損原件可調范圍大,壓縮演算法更優秀。圖片大小看內容的,你拍一張天空的照片,細節不多,就比較小,拍一張花叢的,就比較大,不信自己試。

另外導出可以限制圖片大小的,類似無忌限制256k,你就可以設置這個值,這樣導出的jpg如果在無限制情況下大於256k,限制情況下小於256k,尺寸一樣,那麼就不是100%畫質,有一定的壓縮,但網上小圖區別不大。

5. svm,lr,dt的區別和各自的優勢

SVM最早是二分類器,LR是回歸方法,兩者處理的問題不一樣,根本不是一個模型,,,現在擴展了SVM做回歸,稱為SVR演算法,SVR演算法和LR的本質區別在於衡量誤差標準的不同,所以擬合出來的結果不同,但都是好的擬合方法。

6. LR分析法的SLR(1)分析表的構造

在前面討論LR(0)分析表的構造演算法時,我們曾經指出,僅當一個文法G是LR(0)文法時,才能對它構造出無沖突動作的LR(0)分析表。然而,對於通常的程序設計語言來說,它們一般都不能用LR(0)文法來描述。例如,考慮如下「簡單分程序」的文法G[B′]:
0? B′→B3? D→d
1? B→bD;Se4? S→s;S
2? D→D;d5? S→s
相應識別其全部活前綴的DFA及LR(0)分析表如圖417及表414所示。由於在項目集I8中,既含有移進項目[S→s·;S],又含有歸約項目[S→s·],因而反映到分析表中就出現了具有多重定義的元素ACTION[8,′;′]={s10,r5},前者指明當輸入符號為「;」時應將它移進棧中,而後者則要求按第5個產生式S→s進行歸約。於是就出現了有「移進歸約」沖突的分析動作。又如,對於通常用來描述簡單表達式的文法G[E],當構造它的項目集規范族時,也會出現類似的情況。這就表明,這兩個文法都不是LR(0)文法。然而,盡管如此,對大多數程序設計語言來說,這種具有沖突項目的項目集,在整個項目集規范族中所佔的比例畢竟是很小的。因此,如果我們能設法解決出現在一個項目集中的「移進歸約」或「歸約歸約」沖突,那麼,只要對前述構造LR(0)分析表的演算法稍加修改,它仍能適用於我們現在討論的情況。
表414G[B′]的LR(0)分析表
b[]d[];[]s[]e[]#[]B[]D[]S0[]s2[8]11[7]acc2[3]s4[9]33[4]s54[]r3[]r3[]r3[]r3[]r3[]r35[][]s7[][]s8[10]66[6]s97[]r2[]r2[]r2[]r2[]r2[]r28[]r5[]r5[]r5,s10[]r5[]r5[]r59[]r1[]r1[]r1[]r1[]r1[]r110[5]s8[10]1111[]r4[]r4[]r4[]r4[]r4[]r4
仔細分析上述構造LR(0)分析表的演算法容易看出,使分析表中出現多重定義分析動作的原因在於其中的規則(2),即對於每一項目集Ii中的歸約項目A→α·,不管當前的輸入符號是什麼,都把ACTION子表相應於Ii那一行 (即第i行)的各個元素指定為rj,其中j是產生式A→α的編號。因此,如果該項目集Ii中同時還含有形如B→α·bβ或C→α·的項目,則在分析表的第i行中,必然會出現多重定義的元素。
由此可見,對於含有沖突的項目集
Ii={B→α·bβ,A→α·,C→α·}
在構造分析表時,如果能根據不同的向前符號a,將Ii中各項目所對應的分析動作加以區分,那麼就有可能使沖突得到解決。為此,對於文法中的非終結符號U,我們定義集合
FOLLOW(U)={a|S′#?*…Ua…, a∈VT∪{#}}
即FOLLOW(U)是由所有含U的句型中,直接跟在U後的終結符號或#組成的集合。現對上述項目集Ii,考察FOLLOW(A),FOLLOW(C)及{b},若它們兩兩不相交,則可採用下面的方法,對Ii中各個項目所對應的分析動作加以區分。
對任何輸入符號a:
(1) 當a=b時,置ACTION[i,b]=「移進」;
(2) 當a∈FOLLOW(A)時,置ACTION[i,a]={按產生式A→α歸約};
(3) 當a∈FOLLOW(C)時,置ACTION[i,a]={按產生式C→α歸約};
(4) 當a不屬於上述三種情況之一時,置ACTION[i,a]=「ERROR」。
一般地,若一個項目集I含有多個移進項目和歸約項目,例如
I={A1→α·a1β1, A2→α·a2β2,…,Am→α·amβm, B1→α·, B2→α·, …, Bn→α·}
則當集合{a1,a2,…,am},FOLLOW(B1),FOLLOW(B2),…,FOLLOW(Bn)兩兩不相交時,可類似地根據不同的向前符號,對狀態為i時的沖突動作進行區分。
上述用來解決分析動作沖突的方法稱為SLR(1)規則。此規則是由F?DeRemer於1971年提出的。
有了SLR(1)規則之後,只須對前述構造LR(0)分析表的演算法中的規則(2)作如下的修改:「(2)′若歸約項目A→α·屬於Ii,設A→α為文法的第j個產生式,則對於任何屬於FOLLOW(A)的輸入符號a,置ACTION[i,a]=rj」,且其餘的規則仍保持不變,就得到了構造SLR(1)分析表的演算法。
對於給定的文法G,若按上述演算法構造的分析表不含多重定義的元素,則稱文法G為SLR(1)文法。例如,對於上面的文法G[B′],它的項目集
I8={S→s·; S,S→s·}
含有沖突的項目,但由於FOLLOW(S)={e}≠{;},故沖突可用SLR(1)規則解決,與上述項目相應的分析動作分別是:
ACTION[8,;]=s10ACTION[8,e]=r5
此外,再注意到FOLLOW(B′)=FOLLOW(B)={#}和FOLLOW(D)={;},則按上述演算法為G[B′]所構造的SLR(1)分析表b[]d[];[]s[]e[]#[]B[]D[]S0[]s2[8]11[7]acc2[3]s4[9]33[4]s54[4]r35[3]s7[][]s8[10]66[6]s97[4]r28[4]s10[][]r59[7]r110[5]s8[10]1111[6]r4

7. 怎麼用單反相機照出的照片用PS修出偏膠片風格的圖像 最好有圖

下面操作步驟:
首先是在LR裡面的操作
1)基本項:
曝光的控制根據自己的片子來調整,但黑色色階通常會拉多一點讓黑色不實,總之是基本項的思路就是低飽和,低對比度,讓片子發灰一些再微加清晰度。這樣做的好處,看直方圖就可以明白,把兩邊的圖片信息全部拉回來了,獲得更多的「數據」,讓之後的後期操作有更多的餘地。
2)色調曲線項:
這是一個經典曲線,膠片感的曲線大多也就這個樣式,「暗部不實,高光泛奶白」就是膠片的特徵,這個曲線就把它當成一個公式記住就可以。
3)HSL,顏色選項:
雖然之後在PS里也會有顏色調整,但在LR可以大概的進行調色,LR調色比較直觀一些。思路是統一色調,減少每種的顏色的「艷麗」感,如:統一遠處的樹木的黃色和綠色,綠色中加入一些黑色,讓紅色不那麼艷麗發灰一些。
分離色調,細節選項無操作
4)效果選項:
適量加入一些噪點。
5)相機校準選項:
這個個人感覺很像PS里的混合通道器調色,而在LR里調整感覺更加簡單直觀容易理解且還有一個單獨的飽和度選項,非常的好用。主要用來的讓照片「色偏」。這里對紅原色和綠原色進行調整
讓其更加厚重感。
LR的調色完成導入PS調色,請不要在LR里執行導出操作再導入PS,直接點右鍵選擇「在應用程序中編輯」即可。
在LR轉PS的過程中會有一個選項,選擇【用Lightroom渲染】,在PS里就是SRGB色域,但有可能有偏色現象,原因不解。選擇【仍然打開】在PS里就是AdobeRGB色域,需要在PS手動轉一次SRGB色域。
在照片導入LR的時候,不管相機是什麼色域,導入後都會變成ProPhotoRGB色域,這是一個比AdobeRGB色域還要「大」的色域。前者選項會有一個ProPhotoRGB色域轉SRGB色域的過程,可能是LR演算法問題造成了一定的色彩丟失。
導入PS後就是一個可選顏色的微調,參數如下:
6)微調之後,就可以得到效果如下圖片了:
7)最後就是色階對曝光微調,液化,加水印等的常規操作了。

8. LR(1) 分析演算法

LR(0) LR(1) 其實沒有什麼不同的地方,本質區別在於「分析表怎麼畫」

分析表中的一個狀態被叫做項目

這個被叫做項目集。下面舉個實例畫這個分析表:

然後有以下規則:

首先解釋什麼是 FIRST_S 集合,簡單來說 FIRST_S 集合就是 FIRST 集合,只不過 FIRST_S 可以是一串字元拼接就像圖中 。

然後解釋 a 的值是什麼,簡單來說 a 是 FOLLOW( ),所以在這條規則中 a 是 $,而 為空

所以 b = FIRST( $ ) = $

寫到這里:關鍵的地方來了,由於 E 由被寫進去了,所以還要將 E 又寫進去,此時的 是 +E,a 是 $ 所以 FIRST(+E$ ) = +,最後合並在一起就變成

...

大概以後會看這篇文章:

https://www.ibm.com/developerworks/cn/linux/sdk/lex/index.html

9. lr和acr開raw圖像,改成camera standard曝光和色彩還是和原圖不同,怎麼破。

首先raw本身就是原始數據,無所謂原圖是什麼樣的。對於你的問題,我理解為:相機解析給你看的圖像和LR等解析給你看的圖像不一樣。那是因為相機的機內演算法和LR的演算法不一樣。初始曝光和色彩數據應該在raw的頭文件里有記錄,通過頭文件傳遞給LR等處理軟體,你的狀況似乎是此頭文件沒有傳遞給LR,或者是LR無法正確解析。因為你沒有提及你的相機型號和LR版本信息,無法進一步推測,但是你可以嘗試更新LR版本以獲得更多的設備型號和更好的支持。另外,在以上條件都滿足的情況下,有可能因為誤用LR導入時的默認預設也會出現類似情況,你可以先檢查一下你的導入設置里是否默認使用了其它預設方案,如果是,將其改為「無」就可以了。

10. LR分析法的LR(1)分析表的構造

前面所介紹的SLR(1)分析法是一種較實用的方法。其優點是狀態數目少,造表演算法簡單,大多數程序設計語言基本上都可用SLR(1)文法來描述。然而,也的確存在這樣的文法,其項目集的「移進歸約」沖突不可能通過SLR(1)規則得到解決。試看下面的例子。
例4?8考察文法G[S′]=({S′,S,A,B,C,D}, {a,b},,P,S′)其中,P由如下的產生式組成:
0? S′→S4?B→C
1?S→CbBA5?B→Db
2?A→Aab6?C→a
3?A→ab7?D→a
識別此文法的全部活前綴的DFA見圖418。其中項目集I10={S→CbBA·,A→A·ab}存在「移進歸約」沖突,但因FOLLOW(S)={#},故上述沖突可通過SLR(1)規則得到解決。然而,在項目集I8={C→a·,D→a·}中,由於FOLLOW(C)={a,b},FOLLOW(D)={b},即FOLLOW(C)∩FOLLOW(D)≠?,故用SLR(1)規則解決上述「歸約歸約」沖突無效。而且還可驗證,對於任何K>0,上述文法也是非SLR(k)的,故不能通過任何SLR(k)規則使項目集I8中的「歸約歸約」沖突得到解決 [2]。因此,我們需要更強的LR分析法,即LR(1)分析方法來解決這一問題。
對SLR(1)規則稍作分析即可發現,它對某些文法失效的原因,在於當所給的文法出現沖突的分析動作時,SLR(1)規則僅孤立地考察輸入符號是否屬於與歸約項目A→α·相關聯的集合FOLLOW(A),以確定是否應按產生式A→α進行歸約,而沒有考察符號串α所在規范句型的「環境」,即沒有考察α在規范句型中的「上下文」,這就具有一定的片面性。因為一旦α出現在分析棧的頂部 (設分析棧當前所存放的符號串為#δα),且當前的輸入符號a也屬於FOLLOW(A),就貿然將α歸約為A,此時分析棧中的符號串將變成#δA,但若文法中並不存在以δAa為前綴的規范句型,那麼,這種歸約無效。例如,對於上述文法中的規范句型Cbabab,當分析達到格局
I0I2I4I8[]#Cbabab(4?50)
時,如果僅根據當前輸入符號b∈FOLLOW(C),就將棧頂符號a按產生式C→a歸約為C,則有如下的格局:
I0I2I4I6[]#CbCbab
但在該文法中,根本不存在以CbCb為前綴的規范句型,因此在執行下一動作將b移進之前,分析器將報告「出錯」。由此可見,在分析過程中,當試圖用某一產生式A→α歸約棧頂符號串α時,不僅應查看棧中符號串δα,還應向前掃視一輸入符號a (我們將a稱為向前搜索符號),只有當δAa的確構成文法某一規范句型的前綴時,才能用此產生式進行歸約。為了指明上述事實,應當在原來的每一LR(0)項目[A→α·β]中放置一個向前搜索符號a,使之成為[A→α·β,a]的形式,我們將此種項目稱為一個LR(1)項目。同時,為了使分析的每一步都能在棧中得到一個規范句型的活前綴,還應要求每一個LR(1)項目對相應的活前綴都是有效的 (其定義在下面給出)。此外,為了克服分析動作的沖突,在必要時,我們還可將某些項目集進行分解,以便使每一個狀態都能確切地指明: 當α已出現在棧頂,且面臨哪些輸入符號時,才能按產生式A→α將α歸約為A。
所謂一個LR(1)項目[A→α·β,a]對活前綴γ=δα有效,是指存在規范推導
S?*δAy?δαβyy∈V*T
且滿足下列條件:
(1) 當y≠ε時,a是y的首符號;
(2) 當y=ε時,a=#。
例如,對於例4?8所給文法,因有
S?CbBA?CbBab?CbDbab
其中,δ=Cb,α=D,β=b,y=ab,A=B,故LR(1)項目[B→D·b,a]對活前綴γ=CbD有效。又因
S?*CbDbab?Cbabab
其中,δ=Cb,A=D,α=a,β=ε,y=bab,故LR(1)項目[D→a·,b]對活前綴γ=Cba有效。由此也可看出,當分析器所處的格局為式(4?50)時,應當將棧頂符號a歸為D,而不應將它歸約為C。
與LR(0)文法的情況相類似,識別文法全部活前綴的DFA的每一個狀態也是用一個LR(1)項目集來表示,而每一個項目集又是由若干個對相應活前綴有效的LR(1)項目組成。為了構造LR(1)項目集族,我們同樣需要用到兩個函數,即CLOSURE(I)及GO(I,X)。
對每一LR(1)項目集I,相應的CLOSURE(I)的定義如下:
(1) I中的任何LR(1)項目都屬於CLOSURE(I)。
(2) 設項目[A→α·Bβ,a]∈CLOSURE(I),並假設它對活前綴γ=δα有效,則對文法中所有形如B→η的產生式和每一個b∈FIRST(βa),形如[B→·η,b]的全部項目也都對γ有效,故若[B→·η,b]原不在CLOSURE(I)中,則應將其放入。事實上,因為[A→α·Bβ,a]對γ=δα有效,則由定義我們有:
s?*δAy?δαBβyy∈V*T
且a∈FIRST(y)∪{#},故可將上面的推導寫成
S?*δAy?δαBβaωω∈V*T∪{#}
現設文法已經過化簡,故不論β是否為ε,從βaω總能推出終結符號串,於是可假定
βaω?*bω′
又因a≠ε,有FIRST(βaω)=FIRST(βa),從而就得到推導
S?*δαBbω′
由此可見,一切形如[B→·η,b]的項目也對活前綴γ=δα有效。
(3) 重復步驟(2)直到沒有新的項目加入為止。
至於函數GO(I,X),其中I為一LR(1)項目集,X為某一文法符號,與LR(0)文法類似,我們也將它定義為:
GO(I,X)=CLOSURE(J)
其中J是由這樣的一些LR(1)項目組成: 對I中所有圓點在X左邊形如[A→α·Xβ,a]的項目,其後繼項目[A→αX·β,a]∈J。注意,每一LR(1)項目與其後繼項目有相同的向前搜索符號。
有了上述CLOSURE(I)和GO(I,X)的定義之後,採用與LR(0)類似的方法,可構造出所給文法G的LR(1)項目集族C及狀態轉換圖。例如,對於上述文法,其LR(1)項目集及狀態轉換圖如圖419所示。
對於給定的文法G,當相應的LR(1)項目集族C及GO函數構造出來之後,便可按如下的演算法構造它的LR(1)分析表:
(1) 對於每個項目集Ii中形如[A→α·Xβ,b]的項目,若GO(Ii,X)=Ij,且當X為一終結符號a時,置ACTION[i,a]=sj。但若X為一非終結符號時,則置GOTO[i,X]=j。
(2) 若歸約項目[A→α·,a]∈Ii,A→α為文法的第j個產生式,則置ACTION[i,a]=rj。
(3) 若項目[S′→S·,#]∈Ii,則置ACTION[i,#]=acc。
(4) 在分析表中,凡不能照上述規則填入信息的元素,均置為「出錯」。
對於一個文法G來說,若按上述演算法所構造的分析表不含有多重定義的元素,則稱此分析表為G的LR(1)分析表。凡具有LR(1)分析表的文法稱為LR(1)文法。例如,上述文法的LR(1)分析表見表416,所以它是一個LR(1)文法。

熱點內容
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:727
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:797
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:504
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:366
ef資料庫查詢數據 發布:2025-05-18 03:29:36 瀏覽:668
百度雲下載文件夾 發布:2025-05-18 03:17:33 瀏覽:674
php雲開發 發布:2025-05-18 03:12:41 瀏覽:447
sql語句顯示表 發布:2025-05-18 03:12:30 瀏覽:690
資料庫系統的例子 發布:2025-05-18 03:02:42 瀏覽:191
數字化儲存與編譯是什麼 發布:2025-05-18 02:56:55 瀏覽:217