Агуулгын хүснэгт:
- Алхам 1: Зураг авах
- Алхам 2: Зургийг MATLAB руу ачаална уу
- Алхам 3: Зургийн шинжилгээ
- Алхам 4: Шатрын самбар дээрх цагаан талбайн өргөнийг тооцоол
- Алхам 5: Туршилтын зургийн 3 ба 4 -р алхамуудыг давтана уу
- Алхам 6: Линзний томруулалтыг тооцоол
- Алхам 7: R-квадрат ба хэрэглэгчийн жорыг интерполяци ашиглан олох
- Алхам 8: Хэрэглэгчийн жорыг график дээр харуулах
- Алхам 9: Эмийн жороо нарийсгах
Видео: Нүдний алимны жор: BME60B төсөл: 9 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:00
Оруулсан: Ханна Силос, Санг Хи Ким, Томас Васкес, Патрик Висте
Томруулах нь диоптерийн жороор ангилдаг нүдний шилийг унших гол шинж чанаруудын нэг юм. Мичиганы Технологийн Их Сургуулийн мэдээлснээр диоптер бол линзний фокусын урт бөгөөд ихэвчлэн мм -ээр хэмжигддэг (Мичиганы Технологийн Их Сургууль). Унших шил нь гүдгэр линзтэй байдаг тул фокусын урт нь эерэг байх тул диоптерууд эерэг байх болно (HyperPhysics). Обьект хоорондын зай бодит линзээс холдох тусам фокусын урт нэмэгддэг бөгөөд энэ нь диоптерууд урвуу пропорциональ байдаг тул буурахад хүргэдэг. Нэмэлт диоптер бүхий нүдний шилтэй байх нь линзийг илүү нарийвчлалтай харагдуулахад тусална.
Үзүүлсэн кодыг үл мэдэгдэх жороор авсан линзний диоптерийг урьдчилан таамаглахад ашиглах болно. Жорыг тооцоолохдоо хоёр оролтыг ашигладаг: ямар ч линз ашиглаагүй хяналттай арын гэрэл зураг, мөн ижил дэвсгэртэй боловч сонгосон линзээр авсан өөр гэрэл зураг. Хөтөлбөр нь эдгээр хоёр зургийн хоорондох гажуудлыг хэмжих болно. Тэндээс бид линзний диоптерийг тооцоолж, хэрэглэгчдэд үзүүлэх үр дүнг гаргах боломжтой болно.
Энэхүү зааварчилгааны хувьд танд дараахь зүйлс хэрэгтэй болно.
- 11х8.5 хэмжээтэй цаасан дээр хэвлэсэн хар цагаан өнгийн алагны загвар
- Фокусаа түгжих чадвартай камер
- Tripod, эсвэл камерыг хамгаалахтай төстэй зүйл
- Унших шилний янз бүрийн жор
- МАТЛАБ
Алхам 1: Зураг авах
Линзний томруулалтыг тооцоолохын тулд та үүнийг объектын бодит хэмжээтэй харьцуулж үзэх хэрэгтэй. Энэ төслийн хувьд бид томруулсан зургийг хяналтын дүрстэй харьцуулах болно.
Тиймээс эхний алхам бол нэг зургийн хоёр зургийг авах явдал юм: эхнийх нь зөвхөн камераар, хоёр дахь нь туршихыг хүсч буй унших шилний линзээр дамжих явдал юм.
Та 1 инчийн тор бүхий 8.5x11in хэмжээтэй хар цагаан өнгийн даамны зургийг авах болно. Шатны самбараас хол зайд камераа 11 инч байрлуулна уу. Зураг авахаасаа өмнө анхаарлын төвд байгаа бөмбөгийг түгжээрэй.
Унших нүдний шилгүй алаг самбарын зургийг аваарай. Дараа нь юу ч хөдөлгөхгүйгээр унших нүдний шилийг камерын өмнө тавиад хоёр дахь зургийг аваарай.
Таны камерын байрлал буудлагын хооронд шилжихгүй байгаа эсэхийг шалгаарай. Хоёр зургийн хооронд өөрчлөх ёстой цорын ганц зүйл бол камерын урд нүдний шил байдаг.
Та зургуудаа хийж дуусмагц компьютер дээрээ байршуулаарай.
Алхам 2: Зургийг MATLAB руу ачаална уу
Шинэ скрипт нээнэ үү.
Нэгдүгээрт, зураг хадгалагдаж буй лавлахыг зааж өгнө үү. Дараа нь-j.webp
Dir = 'C: / Users / kuras / Desktop / classes / SQ2 / BME60b / Sandbox / testphotos'; GetDir = dir ('*. Jpg');
Манай төслийн хувьд бид файлыг харьцуулахыг хүсч буй програмын хэрэглэгчийг санал болгохыг хүссэн. Эхний хэсэг нь хэрэглэгчээс хяналтын дүрсийг зааж өгөхийг хүсдэг бол хоёр дахь хэсэг нь хэрэглэгчээс туршилтын дүрсийг зааж өгөхийг хүсдэг.
- %Хяналтын дүрс ямар файл болохыг хэрэглэгчээс асуугаарай.
- Control = input ('хяналтын зургийн#. / N');
- ControlFile = [GetDir (Control).name]
- %Хэрэглэгчээс ямар файлыг шинжлэхийг хүсч буйгаа асуугаарай.
- SelectFile = оролт ('\ n# дүн шинжилгээ хийхийг хүсч буй зураг. / N');
- PrescripFile = [GetDir (SelectFile). Нэр];
Алхам 3: Зургийн шинжилгээ
MATLAB -ийн өнгөт дүрс нь MxNx3 хэмжээтэй бол саарал өнгийн дүрс нь MxN байна. Энэ нь саарал өнгийн зургийг сайжруулах, засварлахад илүү хурдан байдаг гэсэн үг бөгөөд үүнийг хянах өгөгдөл багатай байдаг. (Имротат функцийг бидний зургууд хэвтээ байдлаар байрлуулсан тул ашигласан болно. Энэ кодын мөр нь таны хувилбарт шаардлагагүй байж магадгүй юм.)
- %нь саарал өнгөтэй болж хувирна
- I = imread (ControlFile);
- I = rgb2gray (I);
- I = имротат (I, 90);
Дараа нь зургийг харуулна. Дэд талбарын функцийг ашигладаг бөгөөд ингэснээр туршилтын дүрс нь дараагийн алхамуудад хяналтын хажууд байх боломжтой болно.
- %дэлгэц
- зураг (1);
- дэд хэсэг (1, 2, 1)
- imshow (I);
- гарчиг (ControlFile);
Imcrop -ийг ашиглан хэрэглэгчийг шалны самбарыг бүтэн дүрснээс таслахыг шаардах. Дараах код нь хэрэглэгчид заавар өгөх мессежийн хайрцгийг харуулдаг.
- %дүн шинжилгээ хийх зорилгоор шалгах самбарыг тайрч аваарай
- waitfor (msgbox ({'Даамны самбарыг хайчилж авахын тулд хөндлөн үсээ ашиглаарай.', 'Дараа нь сонирхож буй талбар дээр давхар товшино уу.'})));
- I_crop = imcrop (I);
Зургийг бинарлахын тулд imbinarize ашиглана уу.
I_binary = imbinarize (I_crop);
Алхам 4: Шатрын самбар дээрх цагаан талбайн өргөнийг тооцоол
Дараа нь, imline ашиглан зурган дээр шугам зурахыг хэрэглэгчээс хүс. Энэ мөр нь даамын самбарыг хөндлөн чиглүүлэх ёстой. Энэ нь хар дөрвөлжин дээрээс эхэлж, дуусах ёстой (хаана байх нь хамаагүй), учир нь бид хар дөрвөлжингийн өргөнийг хэмжих болно.
- %шугам зурна
- зураг (1)
- дэд хэсэг (1, 2, 1)
- imshow (I_binary);
- waitfor (msgbox ({'Хар хайрцагнаас хар зай хүртэл 9 хайрцгийг хамарсан шугам зурахын тулд товшоод чирнэ үү.', 'Батлахын тулд хоёр дарна уу.')));
- мөр = imline;
- байрлал = хүлээх (шугам);
- төгсгөлийн цэгүүд = line.getPosition;
Зурсан шугамын төгсгөлийн цэгүүдийн хувьд X ба Y координатуудыг гаргаж ав.
- X = төгсгөлийн цэгүүд (:, 1)
- Y = төгсгөлийн цэгүүд (:, 2);
Зурсан шугамын дагуух эрч хүчийг үндэслэн график гаргахын тулд improfile ашиглана уу. Энэ нь 0 (хар) -аас 1 (цагаан) хүртэлх дөрвөлжин долгионтой төстэй байх ёстой. Оргилууд болон тэдгээрийн байршлыг тооцоол.
- зураг (2)
- дэд хэсэг (1, 2, 1)
- гарчиг ('Дүрслэх чадваргүй шугам дээрх зургийн эрч хүч (Хяналт)')
- дүрсгүй (I_binary, X, Y); сүлжээ асаах;
- [~, ~, c1, ~, ~] = сайжруулаагүй (I_binary, X, Y);
- [Peaks, loc] = findpeaks (c1 (:,,: 1));
- түр хүлээгээрэй
- талбай (лок, оргилууд, 'ro');
- түр зогсоо
For давталт ашиглан тэгш бус график дээрх өндөрлөг бүрийн уртыг ол. For давталтыг тохиромжгүй графикт байгаа ижил тооны оргилуудад ажиллуулна уу. Өндөрлөг бүрийн уртыг тооцоолохын тулд "хайх" функцийг ашиглан "0" эрчмийн утгын оронд "1" байгаа бүх байршлыг олох боломжтой. Дараа нь уг массивын уртыг тооцоолж, цагаан талбайн өргөнийг пикселээр тэнцүү байх тэгш өнцөгтийн нийт уртыг авна. ControlPlateauList = тэг (1, урт (loc));
i = 1 хувьд: урт (loc)
хэрэв би == урт (loc)
өндөрлөг = олох (c1 (loc (i): төгсгөл,:, 1));
өөр
өндөрлөг = олох (c1 (loc (i): loc (i+1) -1,:, 1));
Төгсгөл
ControlPlateauList (i) = урт (өндөрлөг);
Төгсгөл
Алхам 5: Туршилтын зургийн 3 ба 4 -р алхамуудыг давтана уу
*Тэмдэглэл: Туршилтын зурган дээр тохиромжгүй шугам зурахдаа хяналтын зураг дээр зурсан шугамтай тохирч байгаа дөрвөлжин дээр зурахаа мартуузай.
Алхам 6: Линзний томруулалтыг тооцоол
Томруулсан хэмжүүрийг 5 -р алхамд тооцоолсон өндөрлөгийн уртыг 4 -р шатанд тооцоолсон хяналтын өндөрлөгийн уртад хувааж тооцоолно. Үүнийг 1.0884 гэж тооцоолсон болно.
томруулах = дундаж (plateauList)/дундаж (ControlPlateauList);
Алхам 7: R-квадрат ба хэрэглэгчийн жорыг интерполяци ашиглан олох
Кодыг ашиглан:
- md1 = fitlm (GivenPrescription, MagArray);
- Rsquared = md1. Rsquared. Ordinary;
Бид GivenPresciption графикийн R-квадрат утгыг олж болно (бидний линз өгсөн утга) ба MagArray (бидний өмнө тооцоолсон томруулалтын хэмжилтийн харьцааны массив). R квадратын хангалттай өндөр утгатай болсноор энэ аргыг ашиглах үндэслэлтэй хангалттай хүчтэй хамаарал байгаа гэж дүгнэж болно. Энэ тохиолдолд R-квадрат утга нь 0.9912 байсан бөгөөд энэ нь хүчтэй хамаарлыг харуулж байгаа тул шинжилгээнд энэ аргыг ашиглах үндэслэлтэй юм.
Функцийг ашиглан:
Prescription = interp1 (MagArray, GivenPrescription, томруулах, 'шугаман');
Бид томруулалтын харьцаа (y тэнхлэг дээрх утга) -ийн харгалзах жорыг (x тэнхлэг дээр) интерполяц хийж, хэрэглэгчийн бичсэн жорыг олж мэдэх боломжтой.
Мэдээллийг интерполяци хийх нь чухал бөгөөд энэ нь бидэнд байгаа мэдээлэлд үндэслэн бидэнд байхгүй мэдээллийн талаар таамаглал гаргах боломжийг олгодог. Хамгийн сайн тохирох шугам нь техникийн хувьд энэ таамаглалд илүү хүчтэй нэр дэвшигч байх боловч гаралтын тоог багасгахын тулд хил хязгаарыг бий болгох нь жороор олгодог шил нь ямар ч байсан өсөн нэмэгдэж буй жигд утгатай байхтай ижил нөлөө үзүүлдэг. Үүнийг дараагийн алхамуудад тайлбарласан болно.
Алхам 8: Хэрэглэгчийн жорыг график дээр харуулах
Дараах кодыг ашиглан:
- дүрс;
- талбай (GivenPrescription, MagArray, '-g')
- түр хүлээгээрэй
- талбай (Жор, томруулах, 'bp')
- түр зогсоо
- сүлжээ
- домог ('Өгөгдөл', 'Интерполяцлагдсан оноо', 'Байршил', 'NW')
Бид томруулалтын харьцаа ба өгсөн жорыг ногоон шугамаар харуулсан графикийг зурж, цэнхэр одтой интерполяцийн жортой харьцуулахад тооцоолсон томруулалтынхаа өгөгдлийг олж болно. Дараа нь домог нь гарчиг, x тэнхлэг, y тэнхлэгийг тэмдэглээд зүүн дээд буланд домог байрлуулна.
Алхам 9: Эмийн жороо нарийсгах
Жорыг бөөрөнхийлөхөд дараах кодыг ашиглана.
-
хэрэв хөөн хэлэлцэх хугацаа <= 1.125
CalculatedPrescription = '1.0';
-
elseif Хөөн хэлэлцэх хугацаа <= 1.375
Тооцоолсон жор = '1.25';
-
elseif Хөөн хэлэлцэх хугацаа <= 1.625
Тооцоолсон жор = '1.5';
-
elseif Хөөн хэлэлцэх хугацаа <= 1.875
Тооцоолсон жор = '1.75';
-
elseif Хөөн хэлэлцэх хугацаа <= 2.25
CalculatedPrescription = '2.0';
-
elseif Хөөн хэлэлцэх хугацаа <= 2.625
Тооцоолсон жор = '2.5';
-
elseif Хөөн хэлэлцэх хугацаа <= 3
Тооцоолсон жор = '2.75';
-
elseif Хөөн хэлэлцэх хугацаа <= 3.375
Тооцоолсон жор = '3.25';
-
өөр
CalculatedPrescription = 'үл мэдэгдэх';
- Төгсгөл
Интерполяци хийх замаар олж авсан жор нь жинхэнэ жорыг тусгаагүй болно, учир нь хүний буруутай үйлдлээс болж зургийг шинжлэх явцад бага зэргийн өөрчлөлт гарч байх болно. Тиймээс бодит жорыг ангилахын тулд бидэнд энэ алхам хэрэгтэй болно.
Өгөгдсөн жор нь ихэвчлэн 1.0 диоптероос эхэлж, жороор нь.25 -аар нэмэгддэг тул жорыг тооцоолсны дараа хэрэглэгчид хэрэгтэй байгаа зүйлд хамгийн сайн нийцсэн жорыг тодорхойлохыг хүсч байна. Эмийн жорыг тооцоолсны дараа бид үүнийг өгсөн If хэллэгээр дамжуулж, түүний үнэ цэнийг шалгаж, ямар жор шаардлагатай болохыг тодорхойлох болно. 1.125 -аас бага эсвэл тэнцүү зүйл байвал жор нь 1.0 болно. 1.375 -аас бага эсвэл үүнтэй тэнцүү зүйл бол жор нь 1.25 байна. 1.625 -аас бага эсвэл тэнцүү зүйл бол жор нь 1.5 байна. 1.845 -аас бага буюу үүнтэй тэнцүү зүйл бол жор нь 1.75 юм. Гэх мэт.
-Аас бага байгаа эсэхийг шалгаснаас хойш бидэнд үнэ цэнэ нэмэгдэж байна. Хэрэв бид утгууд буурч байвал эхний if илэрхийлэл нь эхний if -ийг үргэлж унших болно. Хэрэв жор нь хамгийн жижиг хэмжээтэй бол бид үүнийг хамгийн жижиг нь гэж хүлээн зөвшөөрөхийг хүсч байна, тиймээс хамгийн бага үнэ цэнэ нь бидний эхлүүлсэн зүйл юм. Хамгийн өндөр утгаас өндөр байгаа нь жор нь бидний өгөгдөлд багтахгүй гэсэн үг бөгөөд энэ нь "Үл мэдэгдэх" мөрийг унших болно.
Зөвлөмж болгож буй:
Хамтрагч хайрцагны жор (Тоног төхөөрөмжийн ремикс / хэлхээ гулзайлгах): 11 алхам (зурагтай)
Хамтран ажиллах хайрцагны жор (Тоног төхөөрөмжийн ремикс / хэлхээний гулзайлт): Тоног төхөөрөмжийн ремикс хийх нь хөгжмийн технологийн давуу талыг дахин шалгах арга юм. Хамтран ажиллах хайрцаг бол цахилгаан хэлхээгээр нугалсан электрон хөгжмийн зэмсэг юм. Тэдний гаргаж буй дуу чимээ нь ашигласан хэлхээнээс хамаарна. Миний хийсэн төхөөрөмжүүд нь олон талт эффект дээр суурилсан
Миний бяцхан хөөмий: хөөх жор + цөөн хэдэн зөвлөмж, заль мэх: 8 алхам
Миний бяцхан хөөмий: хөөх жор + цөөн хэдэн зөвлөмж, арга: АНХААРУУЛГА: Та одоо миний анхны зааварчилгаанд орох гэж байгаа бөгөөд танд тэнэглэл, төлөвлөлт, ур чадвар дутагдах болно. Энэ бол миний өдөр тутам ашигладаг хувийн Tiny Whoop тохиргоо тул хуваалцах гэж бодлоо. Энэ нь аялалд ээлтэй (үгүй
Halo 998 нүдний алимны зориулалттай LED чийдэнгийн засвар: 8 алхам
Halo 998 Eyeball Trim -д зориулсан LED чийдэнгийн засвар: Энэхүү заавар нь нүдний бөмбөлгийн Halo 998 хэсгийг LumiSelect PAR/R16 бүдэг гэрэлтэй чийдэнг Earthled.com дээрээс авахын тулд хэрхэн өөрчлөх талаар тайлбарласан болно. хэсэг, гэхдээ жаахан эффектээр
Цагаан алимны гараа угаав: 6 алхам
Цагаан алимны гараа угаасан: Таны цагаан алимны гар (хуучин үе) маш бохир байна уу? Түлхүүрүүд нь хатуу бөгөөд та үүнийг маш амархан задалж, 20 орчим минутын дотор тоос соруулж болно. Энэ тоосны дараа таны гар дахин цагаан болж, товчлуур дарахад хялбар болно
Алимны энгийн заавар: 13 алхам
Apple -ийн энгийн гарын авлага: Сайн уу бүгдээрээ! Энд popup харилцах цонх хийх энгийн Applescript заавар байна. *** ШИНЭЧЛЭХ *** 4/13/10 шинэчлэлтэнд гурван шинэ скрипт, тэдгээрийг хэрхэн хадгалах талаар оруулсан болно. Анхны шинийг бүтээсэн Marble of Doom -д онцгой талархал илэрхийлье