b445. 移植紋理
標籤 : 影像處理
通過比率 : 2人/5人 ( 40% ) [非即時]
評分方式:
Tolerant

最近更新 : 2015-08-27 16:55

內容

 

將紋理移植到圖片上。

本題採用 Image Quilting 演算法,從紋理擷取小正方形,由左到右、再由上到下拼圖。拼圖恰好蓋滿原圖片就換行。



理論上,最佳的拼圖接縫是「接縫處,紋理與新圖片的誤差」與「接縫之右下區域,紋理與原圖片的誤差」兩個誤差的加權平均值最小。但是這樣很難設計演算法。



本題採用簡易策略:首先找到「紋理與原圖片」誤差最小的小正方形(誤差平手時,先以最高的為主,次以最左的為主);然後於上方重疊區域之中找到「紋理與新圖片」誤差最小的橫向接縫(誤差平手時,以路徑右端最靠上的為主),於左方重疊區域之中找到「紋理與新圖片」誤差最小的直向接縫(誤差平手時,以路徑下端最靠左的為主);最後取兩接縫右下部分(含接縫)作為新圖片。

本題的誤差定義為:對應像素的亮度的差值的總和(超出圖片邊界的像素,不列入計算)。亮度是(R+G+B)/3.0。

 

輸入說明

首先是一道指令:兩個整數 L O (0 <= O < L <= W, H),L是小正方形尺寸,O是重疊寬度。

然後是紋路圖片:兩個整數 W H (1 <= W, H <= 256),是圖片的寬和高;接下來的 H 行,每行有 W*3 個整數,是每個像素的 RGB 值 (0 <= R, G, B <= 255)。

然後是原始圖片:格式同上。

輸出說明

請輸出處理後的圖片。

 

範例輸入 #1
1 0
1 1
7 7 7
2 2
1 2 3 4 5 6
7 8 9 10 11 12
範例輸出 #1
2 2
7 7 7 7 7 7
7 7 7 7 7 7
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (25%): 30.0s , <10M
公開 測資點#1 (25%): 10.0s , <10M
公開 測資點#2 (25%): 1.0s , <1M
公開 測資點#3 (25%): 1.0s , <1K
提示 :

1. 關於 image quilting 的細節,請參考「b441: 延展尺寸」。

2. 學術上,此問題稱作 Texture Transfer,此演算法稱作 Image Quilting。原理是:拼圖,讓誤差越小越好。

標籤:
影像處理
出處:
[管理者: DJWS (...) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」