王 上
從大禹采取疏導治水的方法,到排水系統,再到化工流體設計;從踏板紡織機,到吉姆斯·瓦特的離心調速器,再到機械臂;從算盤,到布萊斯·帕斯卡爾等的齒輪驅動計算,再到William Shockley 等的晶體管電路[1-7].前述的或相似的,每種方法或設備的運用,都為人類生產、生活帶來巨大效率提升及能耗降低.這些進步都源于各位先賢對事物自然規律更加深刻的認知及巧妙運用.有時進步是新的自然規律發現及應用;有時進步是多種事物根據自身不同規律,按照特定流程巧妙地組合為的復雜系統[8].復雜系統按照時間順序自動化運行,從而完成目標任務.人類創建的自動化運行的復雜系統,除了由人按自身心理、行為規律構建的社會系統[9],還有由物體構建的各種自動化系統[5].
目前的計算機是在馮·諾依曼體系結構[10]下,按照脈沖時間順序,進行二進制布爾運算[7]的電子自動化系統.計算機不僅能按人類給定的程序,高效完成各種復雜的十進制數學運算,還能模擬事物的自然變化規律,甚至能構建一個虛擬的平行系統[11].在虛擬平行系統里,人們不僅可以完成各種圖形圖像的產品和工程設計,還能創造出比現實更美妙的音樂及影像作品.計算機對圖像處理和圖像識別的應用,催生出各種算法進行數據分析處理.邊緣檢測是圖像分析處理的第一步,主要是為提取圖像中形狀這一重要特征信息[12-13].邊緣檢測也是視覺通過水平細胞抑制作用處理圖像的重要步驟[14].邊緣檢測后,圖像會生成很多線性交點.如果這些交點作為特征點,應該會在圖像識別、圖形定位、三維重構中有較大應用價值.由于目前的圖像邊緣檢測在視角和光照變化影響下交點位置變化較大,邊緣檢測最大缺點是對紋理和圖像層次信息損失非常大.
1980 年,Fukushima 根據生物學家Huble和Wiesel 的層級模型,發明了由輸入層、卷積層、池化層、全連接層及輸出層構成的CNN 神經網絡[15].CNN 神經網絡,使得原有的機器學習方法下的圖像識別技術取得重大進展.然而,機器學習和圖像處理算法,并不符合動物記憶特性,也不符合計算機的布爾運算規則.圖像學習和處理過程中,需要消耗大量的數據資源和計算資源.目前,符合計算機布爾運算的并在CAD 等平面設計軟件中應用的,二維圖形處理算法,是基于交點遍歷的算法和簡單片鏈算法[16-17].
早在20 世紀40 年代末,馮·諾依曼就提出了適合大型并行運算且符合布爾邏輯運算的元胞自動機模型方法[18].隨著時間推移,在眾多研究者的努力下,元胞自動機發展出類似于數學形態學腐蝕、膨脹的布爾邏輯規則用于圖像處理[19-23].該規則除了采用原有的邊緣檢測用于二值圖像的處理,還采用坐標邏輯把灰度圖像分解成多個不同坐標系的二值圖像,兩者用CA 并行處理,獲得了很好的實驗結果[19,21].文獻[24]運用不同的元胞自動機規則逐級加密生成水印圖像,有效克服了部分水印算法在安全性方面存在的不足.元胞自動機不僅廣泛用于圖形圖像處理,它對空間和時間劃分方法,對于物理擴散現象研究也具有啟發性意義[18,25].本文嘗試根據Margolus 鄰域元胞自動機模型二維網格劃分方法[18],運用布爾邏輯的脈沖運算規則,采用CNN 神經網絡分層結構,對圖形進行邊緣檢測和進一步的研究.
目前,對于黑白二值圖像處理的應用,主要是對形狀結構有要求,而對灰度特征沒有太大要求的文字識別和字跡鑒別.文獻[26]中,劉成林等通過對文字二值圖像多通道分解方法,使字跡鑒別的計算量有效降低,準確率有效提升.多通道分解的方法,也說明合理的圖像分解非常重要.
Margolus 的2×2 鄰域元胞自動機模型劃分,不同于馮·諾依曼鄰域由上、下、左、右4 個元胞組成[22],也不同于摩爾鄰域由上、下、左、右、左上、右上、右下、左下8 個元胞組成[22],它能使二維空間分塊和規則復雜性降低[18].
如圖1,有A、B、C、D黑(0)或白(1)二值點,構成二維2×2 矩陣.這4 個點分別為黑或白狀態下,可構成16 個圖形.這16 個圖形可以分為5 種組合類型:

圖1 二值點構成的2×2 矩陣所有組合圖Fig.1 All combination graphs of 2×2 matrix constituted by binary points
第1 種為4 個點為黑(0)的無.
第2 種為1 個點為白(1)構成的點.
第3 種為2 個點為白(1)構成的最短相連線.
第4 種為3 個點為白(1)構成的角,或具有多個方向的最短相連線.
第5 種為4 個點為白(1)構成的單元面.
單元金字塔結構(如圖2) 輸入的布爾邏輯對2×2 矩陣黑白點構成的5 種情況,分別列出布爾邏輯分類判斷運算式:

圖2 2×2 矩陣輸入的單元金字塔結構圖Fig.2 2×2 element pyramid structure of matrix input
判斷第1 種情況,4 個點為黑(0),邏輯運算式為

判斷第2 種情況,1 個點為白(1),邏輯運算式為

判斷第3 種情況,2 個點為白(1),邏輯運算式為

判斷第4 種情況,3 個點為白(1),邏輯運算式為

判斷第5 種情況,4 個點為白(1),邏輯運算式為

黑白二值點構成的四邊形面(如圖3),每個點被四個相鄰的不同2×2 輸入單元金字塔邏輯連接運算,如圖4.紅色的金字塔邏輯是,根據式(3)運算,輸入2 點為白激活狀態.黃色金字塔邏輯是,根據式(5)運算,4 點為白激活狀態.藍色金字塔是1點為白或0 點為白不激活狀態.

圖3 黑白二值點構成的四邊形面輸入圖Fig.3 Quadrilateral input diagram composed of black and white binary points
根據圖4 分析,紅色金字塔邏輯被四邊形面的邊激活,黃色金字塔邏輯被四邊形面的面激活.如果整個單層都為根據式(3)運算的金字塔邏輯,將激活如圖5 陣列的金字塔.

圖4 不同特性金字塔邏輯對四邊形面不同特征運算圖Fig.4 Pyramid logic operational diagrams of different characteristics for quadrilateral surfaces

圖5 四邊形面輸入的邊緣檢測陣列圖Fig.5 Edge detection array with quadrilateral input
對直角三角形面邊緣檢測,如果是2 點激活的單元金字塔邏輯陣列只能被直邊上的點激活.如圖6 (a)三角形面上的斜邊上對應的單元金字塔邏輯,有3 個輸入都為白(1),不能激活根據式(3)運算的金子塔邏輯,但是能激活根據式(4)運算的金字塔邏輯.如果是2 點或3 點激活的單元金字塔邏輯陣列,就能對直角三角形進行邊緣檢測,構成如圖6 (b)的圖形.因為含有曲線的面的邊可以視為多條直線段和斜線段的組合,所以2 點或3 點激活的單元金字塔邏輯陣列,不僅能處理有斜邊的面,還能對含有曲線的異型面進行邊緣檢測.

圖6 三角形面輸入的邊緣檢測陣列圖Fig.6 Edge detection array of triangle input
2 點或3 點激活的單元金字塔結構邏輯運算式為

文獻[19,21]中的邏輯運算式,根據馮·諾依曼的元胞自動機模型提出,也能對異形結構的二值圖形進行邊緣檢測.本文運算式的不同之處在于,根據不同的劃分模型得出.
第1 層,輸入層的每個點被4 個相鄰的2×2 輸入的單元金字塔邏輯連接,并構成陣列,如圖5 軸測圖.在式(6)作用下,能方便快捷地完成黑白二值面的邊緣檢測,并且向輸入面相對位置橫向和縱向各擴大1 像素位.
第2 層陣列和第1 層陣列結構相同,也進行式(6)運算.由于,第1 層的邊緣檢測,圖形已經是線性狀態,并且第1 層邏輯的輸出成為第2 層4 個相鄰的不同單元金字塔邏輯的輸入.第2 層金字塔結構邏輯陣列被激活的會是第1 層被激活金字塔邏輯陣列邊緣的兩側.這樣就使得第2 層金字塔結構邏輯陣列,除了將單點排除以外,僅僅具有擴散1 像素位的效應.
第3 層,將第2 層外延1 像素位,且進行了單元面的抑制去除.
通過如圖7 金字塔邏輯多層陣列處理,輸入層的四邊形面處理后的邊緣不斷向內和外擴散,并且是具有波狀形態擴散.由于像素點較少,方形邊緣擴散的過程中外緣角很快變成了斜邊.在像素點較多的情況下,擴散圖形變形相對會慢些.邊緣擴散,可以用作一定程度的圖像縮放處理.
如果兩個獨立的圖形在相同金字塔邏輯多層陣列中擴散,它們的相交位置會出現干涉現象.
因為后1 層輸出值的位置在前1 層位置的左下角,所以圖形處理過程中,后1 層的圖形總是朝著前1 層左下角偏移.
1.5.1 圖形的規則抽樣池化
正四邊形面圖形,通過第1 層金字塔邏輯陣列邊緣檢測,再完成第2 層擴散后,將圖形像素按照2×2 矩陣的形式,分為各個小組.每個小組同時抽樣左上角、右上角、左下角、右下角像素形成4 幅圖形,如圖8 (b).將這4 幅圖中比較分析,4 幅圖較為相似,也和圖7 第1 層的邊緣檢測圖相似.它們都是4 條直邊組成并且相對位置都是相同的,但相對于第1 層邊緣圖縮小了4 倍.雖然這4 幅圖較為相似,但是由于之前的擴散處理和抽樣位置不同,它們在細微處仍有不同.不同之處在于圖形位置稍有偏移,且有個角點存在位置不同.

圖7 金字塔結構邏輯多層陣列對四邊形處理圖Fig.7 Pyramid structural logic multilayer array for quadrilateral processing graph

圖8 規則抽樣池化圖Fig.8 Rule sampling pooling diagram
如果將池化的圖形,再進行擴散后規則抽樣處理.那么之前的4 幅圖像,將變為16 幅相似圖像,它們會再縮小4 倍.那么1 024×1 024 像素大小的圖像,經過4 次如前所述的規則抽樣池化,圖像將分解為256 張64×64 像素的小圖像.如果圖形縮小倍數太大,雖然每張圖包含有不同的信息,但圖形變形會偏大,以致于與輸入圖形完全不同.在規則抽樣池化過程處理中,最好使圖形保留8×8、16×16、32×32 像素,以使其圖形結構信息較為完整.
對于大圖中比較小的局部結構,通過多次抽樣可能會損失這部分結構信息.是否可以將大圖形,再分解為多個局部圖形,或通過變焦的方法,依次解決局部問題.如何減少信息的損失,較大限度地保持圖形圖像的信息,還需要進一步研究優化.
1.5.2 多層組合金字塔結構邏輯的匯聚
圖形在2×2 矩陣輸入中,每4 個相鄰點與1 個金字塔結構邏輯相連,且每個點只成為1 個金字塔邏輯的輸入,那么后1 層圖形每次會相對于前1 層圖形也會縮小4 倍.如圖9,由于4 個組合金字塔結構陣列,每次位置都有些許偏移,導致單元金字塔對應的輸入點不同.由于單元金字塔的輸入點不同,那么輸入點的組合會發生變化,最終激活頂層匯聚點金字塔邏輯的形式不同.

圖9 金字塔結構邏輯相連構成的組合金字塔圖Fig.9 Composite pyramid diagram with logically connected pyramid structures
邏輯根據式(6)運算時,金字塔邏輯每次偏移使匯聚點下層有時會出現2 個或3 個激活狀態的邏輯,激活匯聚點;有時匯聚點下層,會出現0 個、1 個、4 個邏輯被激活狀態,從而無法激活匯聚點邏輯.如果是圖6 的三角形結構輸入也會如圖9 得到匯聚點.但它們的結構重心不同,最終的匯聚點會根據重心偏移,導致不同的組合金字塔被激活.
如果先通過規則抽樣為多個圖形,再通過組合金字塔匯聚,那么1 個圖形將能被多個獨立的組合金字塔結構邏輯運算.類似于多通道[26],不同組合形式進行運算.雖然有些組合金字塔不一定能激活匯聚點,通過池化處理成的多個金字塔中,總會有幾種組合形式將匯聚點金字塔邏輯激活.每個被激活的匯聚點包含的組合信息都有一定的差異,并且每個被激活的匯聚點值都與金字塔下部輸入范圍的點相關.
這種方法的匯聚處理過程中,會使每個組合金字塔包含的信息都有所偏差,也會損失很多信息.
現實中的物體在光照下,經常呈現為燦爛多彩、層次分明的圖像.物體的形狀、紋路包含了豐富的信息.色彩對圖形分類的影響不是最大的,而圖像的灰度所構成的多層次圖形對分類起到決定性作用.在布爾邏輯運算中,無法直接運算十進制數據.十進制數據轉換為二值脈沖方式,再進行邏輯電路計算,是目前計算機進行十進制運算的解決方式.灰度圖像是否可以通過二值脈沖形式進行轉換呢?
假設,在→E方向有像素點構成的連線AB亮度為5,BC之間連線亮度為2,連線CD亮度為3.線上各點各對應1 個光敏傳感器.50 ms 內,光敏傳感器根據點的不同亮度發放相應不同次數(如圖10)的同步脈沖數量.光敏傳感器將信號輸出至如圖11的多層網狀結構邏輯,每個下層邏輯輸出點與上層兩個相鄰邏輯相連.每一個三角結構邏輯運算式為

圖10 灰度線AD 上各點在50 ms 內發放的脈沖數量圖Fig.10 The number of pulses emitted by each point on the gray line AD in 50 ms

圖11 灰度線AD 激活的多層三角結構邏輯運算圖Fig.11 Gray line AD activated multilayer triangular structure logic operational graph

最終,50 ms 時間內,連線AB值 Y′將被激活統計為5,連線CD值 Y′′將被激活統計為3,連線AD值Y將被激活統計為2.
多層三角邏輯對連線亮度統計,能統計出具有灰度值的獨立連線亮度和組合連線的亮度.
將具有多值的亮度信號,轉換為多個具有二值信息的脈沖信號,能使布爾邏輯對灰度信息圖像進行處理.如圖12,具有5 個亮度等級的灰度圖像,通過將亮度轉換為二值同步脈沖信號后,產生如圖13 的4 個不同時間的圖形.圖12 中的灰度圖像可以分解為大的方形、三角形、梯形、小的方形.圖13中的圖形雖然也分解為大的方形、三角形、梯形、小的方形,但缺點是分解的數量比圖12 中可分解圖形少.

圖12 具有5 個亮度等級的灰度圖Fig.12 Grayscale image with 5 brightness levels

圖13 不同脈沖次數下生成的二值陣列圖Fig.13 Binary array diagram generated at different pulse numbers
此種方法的處理方式,特點是先從大的輪廓到小的輪廓,因為一般圖像都是局部亮度稍高.如果大的面亮度較高那么圖像無法體現局部.如果圖像的外周亮度較高,中心位置局部亮度較高,在圖像分解過程中,將會在較后的脈沖次數中將大的輪廓和中心位置局部獨立顯示出來.
通過二值脈沖形式,將灰度圖像切分為多個不同時間順序的二值圖形后,可以再運用二值金字塔結構邏輯對圖形按時間順序進行各種處理.
汪海明等[21]所述的通過多個坐標分解方式實現灰度圖像邊緣檢測.本文方法不同之處在于,通過脈沖形式,只在輸入層將多值數據進行時間維度二值切分,最后在輸出層進行單位時間統計.這樣不僅方便前述的多層處理,也減少了數據運算量.如果需要獲得灰度邊緣,只需通過第1 層邊緣檢測后,在單位時間內,對輸出層每個點進行脈沖數量統計獲得.亮度等級設置還需要根據應用場景,配合攝像機實時變焦、實時改變光圈大小,運算設備性能等實際情況,進行進一步研究.
假設,有A、B、C、D這4 個邏輯電路輸出至Y邏輯電路,而每個邏輯電路至Y邏輯電路的路徑上各有1 個延時繼電器.該邏輯電路系統有下述特點:
1) 4 個邏輯和Y邏輯,脈沖輸出特性是相同的,脈沖幅寬3 ms,1 個脈沖周期為10 ms.
2) 延時繼電器將每個輸入脈沖信號延遲5 ms時間.如果,延時繼電器在5 s 時間內,被激活大于100 次,延時繼電器突然失效,脈沖信號延遲0 ms時間.
3) 如圖14,A邏輯脈沖輸出至延時繼電器A′,延時5 ms (圖14 紅色部分).B邏輯脈沖輸出至延時繼電器B′,延時5 ms.C邏輯脈沖輸出至延時繼電器C′,由于延時繼電器C′單位時間內經過多次激活而失效,延時繼電器C′延時0 ms.D邏輯脈沖輸出至延時繼電器D′,由于延時繼電器D′單位時間內經過多次激活而失效,延時繼電器D′延時0 ms.
4) 邏輯Y在不響應期結束后,進入等待期.不響應期7 ms.當邏輯Y的輸入條件滿足激活條件時,等待期進入反應期.等待期可以是極短的.反應期也不再對其他輸入響應.
5) 邏輯Y在等待期,根據式(6)被2 個或3 個同步脈沖高電平激活.邏輯Y被激活后進入反應期,產生1 個3 ms 幅寬的脈沖信號,然后進入7 ms不響應期.不響應期邏輯Y保持低電平,不對輸入產生任何反應.
根據式(6)分析,由于0~ 60 ms 時間內,有4個同步脈沖輸入,邏輯Y在這段時間內,不應被激活.如圖14,邏輯Y在105 ms 時間內卻產生10 個脈沖,前6 個脈沖由C′和D′的同步脈沖共同激活產生,后4 個脈沖卻是由A′和B′的同步脈沖共同激活產生.
根據上述假設現象分析,邏輯Y雖然是根據式(6)進行運算.但由于延時繼電器的延時和延時失效作用,邏輯Y對邏輯A、B、C、D這4 個邏輯輸入的反應發生了變化.如圖14,邏輯Y將只被邏輯A和邏輯B、邏輯C和邏輯D,產生的同步脈沖激活.邏輯Y將不被邏輯A和邏輯C、邏輯A和邏輯D、邏輯B和邏輯C、邏輯B和邏輯D,產生的同步脈沖激活.

圖14 邏輯Y 在延時脈沖輸入情況下的脈沖輸出圖Fig.14 Pulse output diagram of logic Y in the case of delayed pulse input
如果,有A、B、C、D這4 個邏輯輸出構成的2×2 矩陣輸入中,邏輯Y根據式(4)運算,只被3個同步脈沖激活,且邏輯Y的輸入路徑上存在延時繼電器有A′、B′、C′、D′.當A′延時繼電器延時失效和B′、C′、D′延時繼電器未失效;A′延時繼電器延時未失效和B′、C′、D′延時繼電器都失效,邏輯Y將只被有B、C、D這3 個邏輯輸出的同步脈沖激活.那么,可以將邏輯Y的該種情況,視為對B、C、D這3 個點構成的角進行了記憶.如圖9 中的多層組合金字塔結構邏輯,由于輸入的圖形進行了邊緣檢測和規則抽樣,4 個點同時存在同步脈沖的情況,概率很小.對于延時記憶方法,邊緣檢測和規則抽樣具有一定的必要性,否則金字塔邏輯輸入路徑上的延時繼電器會經常性的一起失效.如果2×2 金字塔邏輯輸入路徑的4 個延時繼電器都失效后,金字塔邏輯將只具有邊緣檢測或擴散的作用.
具有正向延時記憶的金字塔結構邏輯,再次被激活的方式是必要的輸入條件滿足.然而,脈沖在多層金字塔結構中,經過多次延時處理后,可能會導致本來不同步的脈沖同步,激活有延時記憶的單元金字塔.雖然出現的概率較低,但此種情況是延時記憶的最大缺陷.
假設,有如第3.1 節所述特性的邏輯電路系統,它的區別在于,A、B、C、D這4 個邏輯電路輸出至Y邏輯電路的脈沖信號是斷續的.該邏輯電路系統的延時繼電器的延時功能,不是突然性的失效,而是根據單位時間內延時繼電器激活次數與延時時間線性相關的縮短.邏輯Y根據式(4)運算,在等待期內有3 個高電平同時存在被激活.
如圖15,該邏輯電路系統的脈沖輸入輸出,在時間軸上的脈沖信號是凌亂不同步的.4 個邏輯的脈沖輸入,使邏輯Y在105 ms 內產生了6 次脈沖.如果,將4 個邏輯輸入任意減少1 個,都將使邏輯Y在105 ms 內產生的脈沖次數少于6 次.說明,該邏輯系統在不規則輸入的情況下,處于等待期的邏輯被激活概率,與多個高電平在3 ms 時間內相互重合概率相關.有效輸入路徑越少,多個高電平在3 ms時間內相互重合概率越低,邏輯被激活概率也越低.

圖15 邏輯Y 在不規律的延時脈沖輸入情況下的脈沖輸出圖Fig.15 Logic Y pulse output diagram with irregular delay pulse input
類似于摩爾鄰域元胞自動機劃分的3×3 矩陣模型,對于已經進行了邊緣檢測的圖形,只會面對7 種組合類型,就是無、點、直線、斜線、曲線、相交線、平行線.如果是面對零散點,通過再次邊緣檢測或邊緣擴散處理后,能予以消除.簡化后的組合類型,也能通過邏輯運算進行大致區分.
3 ×3 矩陣輸入構成的金字塔邏輯,在如圖16排布中,R1有效輸入點2 個,R2有效輸入點4 個,R3有效輸入點3 個,R4有效輸入點3 個.如果3×3 矩陣輸入金字塔結構邏輯也是被3 個同步脈沖高電平激活,那么R1不被激活,而R2、R3、R4將被激活.如果R2、R3、R4的有效輸入點,在100 ms 內產生的脈沖次數大致相同,脈沖都是不規律的異步脈沖.那么,有效輸入點4 個的R2金字塔邏輯輸出的脈沖次數,很大概率比R3、R4金字塔邏輯輸出的脈沖次數多.

圖16 3×3 矩陣輸入金字塔結構邏輯在二值圖形矩陣中的排布圖Fig.16 3×3 matrix input pyramid structure logic arrangement in binary graphic matrix
根據上述假設現象分析,線性相交點對應的3×3 矩陣輸入金字塔結構邏輯R2由于有效輸入點更多,在異步脈沖輸入情況下,輸出的脈沖次數相對更多.R4邏輯雖然也處于線性相交點附近,由于位置稍微偏移,有效輸入點仍然只有3 個.R4邏輯與處于線上位置的R3邏輯,在100 ms 時間內,被各有效點具有相同次數的異步脈沖輸入,激活的概率接近.根據這個特性,在緊密排布的3×3 矩陣輸入金字塔結構邏輯中,圖形線性交點可以很方便地被檢測.
金字塔結構邏輯陣列不僅能高效、可靠地對具有二值特性的圖形進行邊緣檢測、擴散.金字塔結構邏輯構成的二值圖形,還能通過規則抽樣池化的方法,較為準確地形成多個相似圖形,并且能有效縮小二值圖形.同步脈沖方式,能將灰度圖像處理為不同時間維度的多個二值圖形.該方法較大限度地保留了灰度圖像的信息,按時間順序邏輯處理后,經過單位時間統計,能得到灰度邊緣,但仍然有部分信息損失.金字塔結構邏輯輸入路徑上加入延時繼電器,在組合金字塔結構下,對圖形具有一定的記憶特性.不同輸入刺激,產生不同組合金字塔結構性記憶.這種記憶模式不是很穩定,也不易被提取,更加難以局部復制,否則會導致混亂.
本文所述的方法,便于計算機程序模擬實現,且方便整體復制,但是運行效率會比通過電子電路實現效率低.電子電路實現的難點,在于帶有計數功能的可變延時繼電器大規模、小型化的實現和脈沖同步性的協調,更重要是它難以被標記和復制信息.本文的方法,還有很多不足和未考慮到部分,期望下一步,能進行實質性應用探索和更深入細致研究.