將紋理移植到圖片上。
本題採用 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 0 1 1 7 7 7 2 2 1 2 3 4 5 6 7 8 9 10 11 12
2 2 7 7 7 7 7 7 7 7 7 7 7 7
1. 關於 image quilting 的細節,請參考「b441: 延展尺寸」。
2. 學術上,此問題稱作 Texture Transfer,此演算法稱作 Image Quilting。原理是:拼圖,讓誤差越小越好。
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」
|