我有這樣的圖像(閾值,噪聲去除等完成):如何平滑圖像的鋸齒邊緣爲直線?
我的最終輸出應是一個圖像,而沒有任何的鋸齒狀邊緣的,並且比給定的圖像變小。我的意思是說,兩幅圖像之間的唯一區別必須是,在新圖像中,鋸齒狀邊緣必須是,而不是填充在中的鋸齒狀邊緣。像這樣(最終圖像必須是紅色邊框內的區域,紅色邊框僅示出解釋):
我正沿着使用霍夫變換,或使用的線路思維的東西擴張,然後腐蝕,但似乎沒有任何工作(可能是我的錯,因爲我以前沒有在他們的細節過多)。
請注意,我不想這樣做的語言是MATLAB。
有2個主要目標,以這樣的:
- 爲了讓邊緣本身,使用霍夫變換
- 因此使用regionprops時,像這樣的「極值」屬性返回所需品脫:
的問題,以更簡潔的形式:
- 如何在MATLAB中提取這個T,使得它沒有粗糙的邊緣,但是整體圖形不會比原始圖形大,如上面的第二幅圖所示?換句話說,我將使用什麼樣的轉換集合(在MATLAB中)來平滑圖像的邊界,儘可能少地丟失面積(但沒有添加區域),使得粗糙度消失?
- 有沒有更高效的方法來提取角(極值)點,如上圖2所示,而不需要經過步驟1?
編輯: 一些更多的樣本圖像:
NB:在考慮所有圖像將大約在90彼此組成矩形的,並沒有其他的數字。因此,例如,用彎曲的邊緣平滑圖像將超出這個問題的答案範圍(甚至對於這個問題,梯形,儘管我認爲平滑2個直邊應該是相同的,而不管是否邊緣還有另外一條平行線)。
這裏有一些更多的圖片,以供參考:
什麼是你的問題? – Celeo 2014-10-28 17:52:02
對不起。我已經更新了這個問題,以便讓問題更加突出 – 2014-10-28 18:03:59
您可以顯示一些您希望使用此算法的圖像嗎?我認爲編寫一個適用於這個圖像的代碼相對容易,但很難概括它,或者你只關心這個圖像? – 2014-10-28 18:16:26