電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>基于軟件的魔方解算器

基于軟件的魔方解算器

2023-07-06 | zip | 0.17 MB | 次下載 | 免費(fèi)

資料介紹

第一步很簡(jiǎn)單,我們給魔方的一面拍照

poYBAGOhXdWAdmadAAJq01t6wN4957.png
第 1 步 - 初始照片
?

?

第二步是創(chuàng)建圖像的灰度副本并應(yīng)用抗噪濾鏡

pYYBAGOhXd2AebjpAAHeiOYTu6Q253.png
第 2 步 - 帶抗噪濾波器的灰度
?

?

第三步是使用 Canny Edge Detection 找到圖像中的所有邊緣

pYYBAGOhXeGABJXHAABQJHUIlQc406.png
第 3 步 - Canny 邊緣檢測(cè)
?

?

第四步是擴(kuò)大邊緣。我們想讓它們更厚,因?yàn)檫@樣更容易找到立方體的正方形。

poYBAGOhXeOAIsFXAAAc4mOGZp8077.png
第 4 步 - 擴(kuò)大邊緣
?

?

第五步是找到膨脹圖像中所有形狀的輪廓。在下圖中,藍(lán)線是圖像中的各種輪廓。紅線是每個(gè)輪廓的近似形狀。我們檢查紅線的所有形狀以找到看起來像正方形的那些(有四個(gè)角,每個(gè)角大約為 90 度,等等)。如果我們認(rèn)為輪廓是正方形,我們會(huì)將該輪廓顯示為綠色。

pYYBAGOhXeqATFTDAAJQqxMmGQE958.png
第 5 步 - 尋找輪廓
?

?

第六步去除非方形輪廓

poYBAGOhXfaASD4xAAJad-TAg44212.png
第 6 步 - 刪除非正方形
?

?

第七步是去除巨大的輪廓。上圖中只有一個(gè)巨大的輪廓,它是圍繞著外邊緣的一個(gè)輪廓,幾乎囊括了整個(gè)圖像。

pYYBAGOhYnKABClBAAJclFNVC1Q990.png
第 7 步 - 去除巨大的輪廓
?

?

第八步是去除矮輪廓,這些輪廓太小而不能成為魔方。

poYBAGOhYnaAft3OAAJii2rPvEE340.png
第 8 步 - 去除矮化輪廓
?

?

第九步也是最后一步是確定立方體的大小、立方體的邊界并移除立方體邊界外的任何輪廓

poYBAGOhYnuARU-CAAJqX9wgAVc305.png
第 9 步 - 確定立方體大小和邊界
?

我們對(duì)所有六個(gè)面執(zhí)行上述步驟,并提取 5x5x5 魔方的所有 150 個(gè)正方形的 RGB 值。

?

?

軟件 - 立方體狀態(tài)的 RGB 值

我們現(xiàn)在需要獲取所有 150 個(gè)方塊的 RGB 值,并將每個(gè)方塊減少為六種顏色(白色、黃色、紅色、橙色、綠色和藍(lán)色)中的一種。這將為我們提供計(jì)算立方體的解所需的立方體狀態(tài)。

此圖像顯示從上一步圖像中提取的每個(gè)方塊的顏色。請(qǐng)注意,顏色有一些變化,并非所有白色方塊都是完全相同的白色,橙色和紅色有時(shí)看起來非常相似,等等。

pYYBAGOhYn6ALNWkAADYex-yz9o594.png
原始 RGB 值
?

為了將每個(gè) RGB 值減少到六種顏色(白色、黃色等)中的一種,我們將對(duì)顏色進(jìn)行排序。一旦對(duì)它們進(jìn)行排序,我們就可以輕松地將它們分成六組,大小相等,并為每組分配一個(gè)顏色名稱。

對(duì)人類來說,顏色分類很容易,但事實(shí)證明,對(duì)計(jì)算機(jī)來說,這是相當(dāng)具有挑戰(zhàn)性的。如果我們采用上面的顏色并簡(jiǎn)單地按照它們的 RGB 值對(duì)它們進(jìn)行排序,我們將得到以下結(jié)果,您可以看到它根本不是按照您或我對(duì)這些顏色進(jìn)行排序的順序。

pYYBAGOhYoKAILB6AAAhyoxACXE880.png
RGB排序
?

如果我們改為按 HSV(色調(diào)、飽和度、值)對(duì)它們進(jìn)行排序,排序會(huì)更好但仍然不正確:

poYBAGOhYoSAQjzhAAAlO3GH3PM851.png
HSV排序
?

經(jīng)過多次試驗(yàn)和錯(cuò)誤后,我發(fā)現(xiàn)最好的方法是使用旅行推銷員算法對(duì)顏色進(jìn)行排序。你可以在這里看到我們可以將顏色分成六個(gè)干凈的組。

pYYBAGOhYoeAITAiAAAaUZDmsYs915.png
旅行推銷員
?

旅行商問題是一個(gè)著名的計(jì)算機(jī)科學(xué)問題。它要解決的問題是銷售員必須以最有效的順序訪問多個(gè)城市(根據(jù)總行進(jìn)距離)。

pYYBAGOhYoqALrbWAAFVaO16aPw704.png
?

?

有很多庫(kù)和算法可以解決旅行商問題,我使用了tsp_solver python 庫(kù)。我們?cè)?3D 中繪制 150 個(gè) RGB 值,并使用旅行推銷員算法找到理想的訪問順序。旅行推銷員找到的順序提供了對(duì)顏色進(jìn)行排序的順序。在視覺上它看起來像這樣:在這里,您可以看到按旅行推銷員排序的所有邊緣部分(5x5x5 有兩組/邊緣軌道)。我們可以很容易地將它們分成六組,并為每組分配一個(gè)顏色名稱。

pYYBAGOhYpCAc_NBAACGDHMsFaA713.png
?

我們還通過 Traveling Salesman 對(duì)中心塊和角塊進(jìn)行排序,并為每個(gè)方塊分配六種顏色中的一種。您會(huì)注意到下圖中顏色不再變化,所有白色方塊完全相同,所有藍(lán)色方塊完全相同,等等。

poYBAGOhYpOAPa9KAADd6ZOzIYo956.png
?

到達(dá)這里需要做很多工作,但此時(shí) CraneCuber 知道立方體的確切狀態(tài)。這使我們能夠計(jì)算出如何解決立方體的解決方案。

該軟件是開源的,可在 github 上獲取,網(wǎng)址為https://github.com/dwalton76/rubiks-color-resolver

軟件 - 計(jì)算解決方案

基于軟件的魔方解算器是一個(gè)很大的話題,學(xué)生們已經(jīng)完成了算法的博士學(xué)位,可以單獨(dú)解決 3x3x3。我將描述我最終是如何編寫我的求解器的,以及它是如何在較高層次上工作的,但要深入細(xì)節(jié)將超出本文檔的范圍(并且本文檔已經(jīng)很長(zhǎng)了)。

為什么?

當(dāng)我開始使用 CraneCuber 時(shí),我并沒有打算編寫自己的魔方求解器。有許多用于 2x2x2 和 3x3x3 立方體的開源解算器,但沒有那么多的人為 4x4x4 和更大的立方體編寫解算器。我能夠找到一個(gè) 4x4x4 的開源求解器,但那是井枯竭的地方。沒有任何用于 5x5x5、6x6x6 等的開源求解器 :( 我決定編寫自己的求解器,并牢記幾個(gè)目標(biāo):

  • 它將是開源的
  • 它將是一個(gè) NxNxN 求解器,這意味著它可以求解任何大小的立方體
  • 它將能夠在最小的硬件上運(yùn)行,例如 Raspberry Pi

它花了大約 5 個(gè)月的時(shí)間來解決 4x4x4 和 5x5x5 問題,又花了 5 個(gè)月的時(shí)間來實(shí)現(xiàn) NxNxN!在過去的一年里,我繼續(xù)致力于解決方案,我已經(jīng)能夠減少計(jì)算解決方案所需的時(shí)間以及它找到的解決方案的長(zhǎng)度。

我有信心說它是世界上唯一的開源 NxNxN 求解器,我為此感到非常自豪 :) 該求解器可在 github 上找到,網(wǎng)址為https://github.com/dwalton76/rubiks-cube-NxNxN-solver

如何?

基于軟件的魔方求解器的核心是一種稱為迭代深化 A*的算法。您經(jīng)常會(huì)看到它縮寫為 IDA*(發(fā)音為 IDA-star)。

魔方解算器必須解決的問題是找到將魔方從打亂狀態(tài)帶到??已解決狀態(tài)的一系列移動(dòng)。我們可以編寫一個(gè)求解器,通過越來越長(zhǎng)的移動(dòng)序列進(jìn)行蠻力廣度優(yōu)先搜索,直到找到解決方案,但我們會(huì)在它完成之前很久就老死了。我們需要一種更智能、更快速的方法來找到解決方案!

IDA* 是一種算法,允許求解器在搜索解決方案時(shí)消除大量移動(dòng)序列。它不能很好地求解 5x5x5 立方體,但它確實(shí)可以很好地求解立方體的某些子集,例如求解中心。一旦解決了中心問題,我們就可以再次使用 IDA* 來解決邊緣問題。這些被稱為“階段”。我們可以將求解立方體的問題分解為多個(gè)階段,然后使用 IDA* 求解每個(gè)階段。立方體越大,求解立方體所需的階段就越多。大多數(shù) 3x3x3 求解器使用兩個(gè)階段,而我的求解器使用七個(gè)階段來求解 5x5x5。

這是對(duì)基于軟件的魔方解算器如何工作的非常簡(jiǎn)短的介紹。我寫了一篇關(guān)于這個(gè)主題的冗長(zhǎng)博客文章,如果您對(duì)立方體求解器的工作原理感興趣,可以訪問http://programmablebrick.blogspot.com/2017/07/rubiks-cube-solver.html 。

結(jié)論

我希望你喜歡我的項(xiàng)目。我真的很喜歡它的工作 :) 對(duì)于這么長(zhǎng)的關(guān)于它如何工作的文章,我深表歉意。項(xiàng)目的軟件方面涉及太多,我覺得我應(yīng)該給出一個(gè)深入的解釋。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)