久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何用程序解圖片迷宮?

當(dāng)給定一張 JPEG 圖片,如何才能更好地將這張圖轉(zhuǎn)換為合適的數(shù)據(jù)結(jié)構(gòu)并且解出這個(gè)迷宮?幾位參與者熱烈地討論并給出了自己的代碼。,HTML5中國(guó),中國(guó)最大的HTML5中文門戶。

 英文原文:Representing and solving a maze given an image

  譯注:原文是 StackOverflow 上一個(gè)如何用程序讀取迷宮圖片并求解的問題,幾位參與者熱烈地討論并給出了自己的代碼,涉及到用 Python 對(duì)圖片的處理以及廣度優(yōu)先(BFS)算法等。

  問題 by Whymarrh:

       當(dāng)給定上面那樣一張 JPEG 圖片,如何才能更好地將這張圖轉(zhuǎn)換為合適的數(shù)據(jù)結(jié)構(gòu)并且解出這個(gè)迷宮?

  我的第一直覺是將這張圖按像素逐個(gè)讀入,并存儲(chǔ)在一個(gè)包含布爾類型元素的列表或數(shù)組中,其中 True 代表白色像素,F(xiàn)alse 代表非白色像素(或彩色可以被處理成二值圖像)。但是這種做法存在一個(gè)問題,那就是給定的圖片往往并不能完美的“像素化”。考慮到如果因?yàn)閳D片轉(zhuǎn)換的原因,某個(gè)非預(yù)期的白色像素出現(xiàn)在迷宮的墻上,那么就可能會(huì)創(chuàng)造出一一條非預(yù)期的路徑。

  經(jīng)過思考之后,我想出了另一種方法:首先將圖片轉(zhuǎn)換為一個(gè)可縮放適量圖形(SVG)文件,這個(gè)文件由一個(gè)畫布上的矢量線條列表組成,矢量線條按照列表的順序讀取,讀取出的仍是布爾值:其中 True 表示墻,而 False 表示可通過的區(qū)域。但是這種方法如果無法保證圖像能夠做到百分之百的精確轉(zhuǎn)換,尤其是如果不能將墻完全準(zhǔn)確的連接,那么這個(gè)迷宮就可能出現(xiàn)裂縫。

  圖像轉(zhuǎn)換為 SVG 的另一個(gè)問題是,線條并不是完美的直線。因?yàn)?SVG 的線條是三次貝塞爾曲線,而使用整數(shù)索引的布爾值列表增加了曲線轉(zhuǎn)換的難度,迷宮線條上的所有點(diǎn)在曲線上都必須經(jīng)過計(jì)算,但不一定能夠完美對(duì)應(yīng)列表中的索引值。

  假設(shè)以上方法的確可以實(shí)現(xiàn)(雖然很可能都不行),但當(dāng)給定一張很大的圖像時(shí),它們還是不能勝任。那么是否存在一種更好地方法能夠平衡效率和復(fù)雜度?

  這就要討論到如何解迷宮了。如果我使用以上兩種方法中的任意一種,我最終將會(huì)得到一個(gè)矩陣。而根據(jù)這個(gè)問答(http://stackoverflow.com/questions/3097556/programming-theory-solve-a-maze/3097677#3097677),一個(gè)比較好的迷宮表示方式應(yīng)該是使用樹的結(jié)構(gòu),并且使用A*搜索算法來解迷宮。那么如何從迷宮圖片中構(gòu)造出迷宮樹呢?有比較好的方法么?

  以上廢話太多,總結(jié)起來問題就是:如何轉(zhuǎn)換迷宮圖片?轉(zhuǎn)換成為什么樣的數(shù)據(jù)結(jié)構(gòu)?采用什么樣的數(shù)據(jù)結(jié)構(gòu)能夠幫助或阻礙解迷宮?

  回答 by Mikhail:

  這是我的解決方案:

  1. 將圖片轉(zhuǎn)換為灰度圖像(不是直接二值),調(diào)整不同顏色的權(quán)重使得最終的灰度看起來比較統(tǒng)一,你可以通過簡(jiǎn)單地調(diào)節(jié) Photoshop 圖像->調(diào)整->黑白菜單中的控制條來實(shí)現(xiàn)。

  2. 將上一步得到的灰度圖片轉(zhuǎn)換為二值圖片,可以通過在 PS 圖像->調(diào)整->閾值菜單中設(shè)定適當(dāng)?shù)拈撝祦韺?shí)現(xiàn)

  3. 確保正確設(shè)置了閾值。使用魔棒工具(參數(shù)設(shè)置:容差 0、取樣點(diǎn)、連續(xù)以及消除鋸齒)選擇空白區(qū)域,檢查所選區(qū)域的邊緣不是因?yàn)殄e(cuò)誤的閾值設(shè)置而產(chǎn)生的假邊緣。事實(shí)上,這個(gè)迷宮中從 start 到 end 應(yīng)該由聯(lián)通的空白區(qū)域。

  4. 人為地在迷宮外部加上邊界,確保迷宮漫游者^_^不會(huì)從 start 繞著迷宮跑到終點(diǎn)。:)

  5. 選擇語言實(shí)現(xiàn)廣度優(yōu)先搜索算法(BFS),從 start 處開始讓程序運(yùn)行。下面的代碼我選擇用 Matlab 實(shí)現(xiàn)。正如 Thomas 提到的,沒必要糾結(jié)于圖像的表示形式,你可以直接在二值圖像上運(yùn)行。

  以下是用 MATLAB 實(shí)現(xiàn)的 BFS 代碼:

這是個(gè)簡(jiǎn)單的實(shí)現(xiàn),應(yīng)該很容易就能夠改寫為 Python 或其他語言,下面是程序的運(yùn)行結(jié)果:

提問者更新:

  我用 Python 實(shí)現(xiàn)了一下 Mikhail 的方法,其中用到了 numpy 庫(kù),感謝 Thomas 推薦。我感覺這個(gè)算法是正確的,但是效果不太如預(yù)期,以下是相關(guān)代碼,使用了 PyPNG 庫(kù)處理圖片。

  譯注:很遺憾,我用提問者提供的代碼并沒有跑通程序,并且似乎代碼縮進(jìn)有點(diǎn)問題,而下面其他參與者的代碼能夠執(zhí)行通過,并且效果很好。

 回答 by Joseph Kern:

動(dòng)態(tài)執(zhí)行效果:

回答 by Jim

  使用樹搜索太繁雜了,迷宮本身就跟解路徑是可分的。正因如此,你可以使用連通區(qū)域查找算法來標(biāo)記迷宮中的連通區(qū)域,這將迭代搜索兩次這些像素點(diǎn)。如果你想要更好地解決方法,你可以對(duì)結(jié)構(gòu)單元使用二元運(yùn)算(binary operations)來填充每個(gè)連通區(qū)域中的死路。

  下面是相關(guān)的 MATLAB 代碼及運(yùn)行結(jié)果:

回答 by Stefano

  stefano 童鞋給出了生成搜索過程 GIF 及 AVI 文件的代碼 maze-solver-python (GitHub)

翻譯: 伯樂在線 - 熊崽 Kevin

  譯文鏈接: http://blog.jobbole.com/62895/

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

由于實(shí)際運(yùn)行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會(huì)達(dá)到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個(gè)自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對(duì)JavascriptAPI的擴(kuò)展。,HTML5中國(guó),中國(guó)最大的HTML5中文門戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗(yàn)簡(jiǎn)單移植到移動(dòng)端,他們覬覦移動(dòng)原生應(yīng)用人性化的操作體驗(yàn),特別是原生應(yīng)用與生俱來的豐富的手勢(shì)系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個(gè)產(chǎn)品,或者是一個(gè)作品集,又或者僅僅只是一個(gè)靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
本篇文章主要介紹了如何用H5實(shí)現(xiàn)一個(gè)觸屏版的輪播器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
H5廣告,包括H5廣告的設(shè)計(jì)流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個(gè)講義。同時(shí),也讓我意外的收到了非常好反饋和認(rèn)!這是對(duì)我的極大鼓勵(lì)!我的
主站蜘蛛池模板: 免费一级黄色 | 中文字幕成人 | 婷婷综合五月天 | 福利网站在线观看 | 91精品国产综合久久婷婷香蕉 | 国产精品久久久久免费 | 欧美在线天堂 | 日韩国产中文字幕 | 三级在线视频 | 精品久久香蕉国产线看观看亚洲 | 日韩国产精品一区二区三区 | 国产亚洲一级 | 国产精品一区二区三区四区 | 免费观看黄网站 | 91人人视频在线观看 | 久久国产精品久久 | 精品国产一区二区三区久久久蜜月 | 国产一区二区毛片 | 亚洲一区二区视频在线播放 | 日韩成人精品在线 | 国产探花在线精品一区二区 | 午夜在线电影网 | 黑人性hd | 国产午夜精品一区二区三区四区 | 国产男女猛烈无遮掩视频免费网站 | 精品久久久久久一区二区 | 在线视频a | 范冰冰一级做a爰片久久毛片 | 91精品国产一区二区在线观看 | 亚洲第一网站 | 毛片一级片| 特黄特黄a级毛片免费专区 av网站免费在线观看 | 日韩精品一区二区三区视频播放 | 成人三级影院 | 国产精品99久久免费观看 | 特级生活片| 中文字幕在线国产 | 亚洲激情自拍偷拍 | 99亚洲精品| 大香在线伊779 | 日韩一区二区三区视频在线观看 |