我正在寫一個C++程序來放大一些較小的圖像放大圖像,使圖像之間沒有空白。
實施例:
鑑於尺寸2×2(代碼0),4×4(碼1),5×5(代碼2)
代替它們大小的4x6的較大的圖像上的圖像
一種可能的解決方案可以是:
將無間隙圖像分組到一個大圖像
0a 0a 1a 1a 1a 1a
0a 0a 1a 1a 1a 1a
0b 0b 1a 1a 1a 1a
0b 0b 1a 1a 1a 1a
另一個可能是所有2x2圖像或放置在其他地方的4x4圖像,2x2來覆蓋剩餘的空白。
我能想到的最好的是:
1.選擇最小尺寸的圖像,並用它填充圖像。 (0,0)
2.然後選擇下一個較大的圖像(這裏是4x4),製作一個4x4的列表,嘗試替換一些一套是相鄰的2×2的圖像。刪除那些從2x2的名單,並在這個形象的開始點的4x4的列表中的條目。
3.一直這樣做,直到沒有縫隙留下。
隨機性可以實現通過從較小的列表中選擇隨機圖像來製作更大的圖像。
我們可以使用任意數量的圖像副本(0a,0b表示圖像0的2個副本),但希望使用大部分較小的圖像以適合較大的圖像。
是否有預先存在的算法來解決這個安置問題,這些安置問題實施起來很簡單,並解決了保證沒有差距和完全隨機性的問題?
這個問題的嚴重性是什麼?我可以想象你可以回溯到10x15大小的圖像。 –
其實我想避免回溯,並尋找更聰明的解決方案,可能是動態編程或貪婪的方法。 –