碎紙片拼接復原

2021-09-26 16:30:23 字數 1811 閱讀 3623

分析參照該**:

碎紙片復原

1.1問題一

將影象轉化成灰度矩陣

imread函式轉化0-255

第i個碎片的灰度矩陣

y1:取所有碎片最左列組成新矩陣

y2:取所有碎片最右列組成新矩陣

ωi:每乙個的左列分別跟每乙個最右列的差,絕對值最小則匹配

由於紙片上下邊都是空白,將矩陣縮為1978*18

求差值時考慮到「丿」,因此取

對於最左邊跟最右邊紙片:左邊緣跟右邊緣都為225,因此

imshow函式合併

基於,邊緣部分的黑白分布是否相近,判斷相連可能性

相關係數法

cov(x,y)為x與y的協方差,var[x]為x的方差,var[y]為y的方差

利用spss軟體計算各個碎片左右邊緣分別與碎片左右邊緣做相關性分析

問題二①

中文:先按行分類

後採用字型矩形模型?同行間排序

接著匹配模型?拼出原文

先將影象轉化成灰度矩陣

根據字型行分組法:

首先對每一行求和得到乙個新的矩陣,假設灰度值等於255*72,這一行就全都為白色,稱為間隔行,接著記錄下第乙個字型行與間隔行的分割線作為行特徵位置

做出改進:類似於「員」這樣的字中間存在空白行,加入判斷消除影響,沿垂直方向記下行特徵位置。判斷:記下該行特徵位置與下乙個行特徵位置之間的距離,小於n(間隔行高度)則捨棄,直到取到正確的行特徵值

最後分成了12組,第12組還有四個剩餘,是換行,採取人工干預成功分成11組

inshow函式合成判斷基本正確

②下面開始行排序,最左邊碎片左邊緣空白,最右邊碎片右邊緣空白

先轉化為灰度矩陣,採取列相加得新矩陣,若前(後)幾行值等於180*255,找出首位碎片

字型矩形判斷模型:字型的高度寬度基本一致,字型間空隙的高度寬度基本一致,乙個字型就是乙個矩形,即乙個矩形被切割成兩個小矩形,則該兩個小矩形原本是相連的。

通過未被切割的字型確定原始矩陣大小,得到矩陣寬度l_字型和l_空白

將灰度矩陣行向量之和組成乙個新矩陣,字型行上邊界位置pi,下邊界位置qi,對每個灰度矩陣處理,從pi到qi,列相加得到乙個新的矩陣,將值為255*(pi-qi+1)的記做-1,其餘的為1得新的矩陣,分別從左右算,<0個數為空白間隔,>0個數為字型寬度(要先排除特徵行異常的碎紙片)得到左右空白矩陣寬度,將每個碎片右空白矩陣寬度與同行所有碎片左空白矩陣寬度之和匹配,若為l_空白則相連,最終得到同行排序結果。(完)

英文:四線格位置模型?先分組

發現部分標號基線相同?卻與不同的行匹配?人工干涉?

行內匹配模型?同行排序

①先轉化為灰度矩陣,再轉化為0-1矩陣,大於200的為0(白),其餘的為1(黑),得新矩陣,對行求和,得新矩陣,代表黑點個數。

②四線格位置歸類:以第二部分(第三及第三線之間)第三線的位置代表行特徵位置。以例子畫圖表示黑點在每一部分分布個數證明。對新矩陣,兩兩相減?若符合ε>δ(δ=20),則找到第三線位置。但是排出來效果不太好

改進:如「e」全部在第二部分,中間部分發生突變影響第三線位置,因此再次改進第三線位置。

確定完整行高,根據「058.bmp」得出一線與四線之間寬度51+空白行高度10,為行高61,分析,如果第二個正向突變的位置與第乙個的位置之間的差為行高的整數倍,說明結果合理。

如果多出行高的整數倍,則認為是「e」影響,將其修正:加上半個第二部分高度作為第三線位置

其餘特殊情況人工干預分組

③行排序:先化為灰度矩陣,取每張碎片最左邊減同行所有碎片最右邊,若相減值為0,則記為1,若其他則記為0,列相加,值最大即最匹配。

由於碎片過小,誤差較大,當最大值與次大值之間相差一定閾值以內,則誤差較大,加入人工干預。

2023年數模B碎紙片拼接問題的解決方法

一直沒時間寫部落格 其實是在咕咕咕 上週和隊友完美解決了這個國賽題目,寫下我們的方法 第乙個問題,中文和英文的長條拼接。這是最簡單的為題,首先建立乙個圖鄰接矩陣,用乙個紙片最右邊的向量到另乙個製片最左邊向量的歐式距離當作這兩個點的距離,然後跑旅行商問題,用模擬退火法優化,完美解決 第二個問題,中文文...