Агуулгын хүснэгт:

BME 60B Sandbox төсөл: 6 алхам
BME 60B Sandbox төсөл: 6 алхам

Видео: BME 60B Sandbox төсөл: 6 алхам

Видео: BME 60B Sandbox төсөл: 6 алхам
Видео: BME Sandbox Project 2024, Долдугаар сарын
Anonim
BME 60B Sandbox төсөл
BME 60B Sandbox төсөл

Манай Sandbox төсөл нь биологийн чиглэлээр ажилладаг судлаачдад эсийн дээжийг шинжлэх, эсийн нөхцөл байдлыг олж тогтооход туслах зорилготой юм. Хэрэглэгч нүднийхээ дээжийн зургийг оруулсны дараа манай код дүрсийг саарал, хоёртын формат руу хөрвүүлснээр нүдийг тоолоход бэлэн болгоно. Код нь эсийн массыг үнэн зөв олохын тулд бодит эсүүдэд хамааралгүй илүүдэл мэдээллийг устгах босго хэмжээг ашигладаг. Зурган дээрх нүдний тоог тоолсны дараа манай код нь зургийн пикселийн хэмжээг өгч, дараа нь эсийн талбайн эсрэг эсийн тоог төлөвлөн эсийн талбайн хуваарилалтыг олж, хэрэглэгчдэд нэгдэх цэгийг өгөх болно. сонирхож буй эсүүдээр бүрхэгдсэн соёлын тавагны гадаргуугийн хувь. Уулзалт дээр үндэслэн судлаач эсүүд дамжин өнгөрөх эсэхийг тодорхойлох боломжтой; Эс дамжин өнгөрөх гэдэг нь соёлын зарим хэсгийг шинэ ургах орчинд шилжүүлэх замаар амьдрал эсвэл эсийн тоо эсвэл бичил биетний тоог нэмэгдүүлэхийг хэлдэг бөгөөд эсүүд хэт томрох эсвэл хоол хүнсгүй болоход ашигтай байдаг. Кодыг ажиллуулж, зургийг боловсруулсны дараа хэрэглэгч үр дүнг хүлээн зөвшөөрөх эсвэл татгалзах эсэхээ шийдэж, шаардлагатай бол өгөгдлийг илүү сайн авахын тулд босгыг тохируулж болно.

Алхам 1: Шинжилгээ хийхийн тулд зургийг сонгоод тохируулна уу

Шинжилгээ хийхийн тулд зургийг сонгоод тохируулна уу
Шинжилгээ хийхийн тулд зургийг сонгоод тохируулна уу

Манай кодын эхний алхам бол тохирох зургийг сонгож, Matlab дээр дүн шинжилгээ хийхээр тохируулах явдал юм. Бид uigetfile функцийг ашиглан зургийг сонгох боломжтой бөгөөд энэ нь ямар ч файлыг татаж аваад програмд оруулах боломжийг олгодог. Дараа нь imread ашиглан зургийг уншиж, Matlab -д дүн шинжилгээ хийхээр тохируулна. Дараа нь сонгосон зургийг дэд хэсэгт харуулна.

Алхам 2: Босго ба GUI

Босго ба GUI
Босго ба GUI
Босго ба GUI
Босго ба GUI

Кодын эхэнд зургийг "uigetfile" ашиглан сонгож, дараа нь тухайн зургийг хувьсагчаар тодорхойлно. Дараа нь хувьсагчийг өөр өөр дүн шинжилгээ хийхдээ кодыг тодорхойлоход ашиглана. 2х2 хэмжээтэй дэд хэсгийг зураг дээр бүтээсэн болно. 1 -р байрлалд анхны зургийг харуулах болно. Кодын дараагийн хэсэг нь босго хэмжээг тохируулах явдал юм. Эхний ээлжинд 0.6 гэсэн босго утгыг ашигладаг бөгөөд дэд хэсгийн 2 -р байрлалд харуулдаг. If-мэдэгдэл нь хэрэглэгч босгыг хадгалах эсвэл тохируулахыг хүсч байгаа эсэхийг тодорхойлоход хэрэглэгддэг. Хэрэглэгч нь янз бүрийн босго нөхцөлд байгаа дүрс, гулсагч, хадгалах товчийг агуулсан GUI ашиглан босгыг тохируулж чаддаг. Босго тавьсны дараа хэрэглэгч хадгалах товчлуур дээр дарж зургийг хадгалах бөгөөд энэ нь хэрэглэгчдийн MATLAB файлд-p.webp

Алхам 3: Контур ба эсийн тархалтыг төлөвлөх

Контур ба эсийн тархалтыг төлөвлөх
Контур ба эсийн тархалтыг төлөвлөх
Контур ба эсийн тархалтыг төлөвлөх
Контур ба эсийн тархалтыг төлөвлөх

Кодын дараагийн хэсэг нь контурыг харуулдаг. Нүднүүдийг улаан периметрээр хүрээлсэн гогцоо байдаг бөгөөд өөр нүдний орой дээрх эсүүдийг ногооноор дүрсэлсэн байдаг. Тодорхойлсон зургийг 3 -р байрлалд интерактив зайн шугамаар харуулна. Энэ мөр нь хэрэглэгчээс пикселээс миллиметр хүртэл хөрвүүлэгчээр тохируулсан доторлогоо дахь пикселийн тоог тодорхойлох болно. Дараа нь зайн коэффициентийг бүсээр тодорхойлсон талбайг үржүүлж, одоо миллиметр квадратаар илэрхийлнэ. Дараа нь өгөгдлийг гистограм ашиглан төлөвлөж, эсийн тархалтыг газар нутгаар нь хардаг. Дараа нь энэ гистограмыг 4 -р байрлалд харуулна.

Алхам 4: Гар дүрсийг хөрвүүлэх

Нүдний зургийг хөрвүүлэх
Нүдний зургийг хөрвүүлэх

Энэ алхамд бид саарал өнгийн зургийг авч, бинарчилж, шүүж, урвуу байрлуулсан. Эдгээр функцийг зурган дээр хийснээр эсүүд гэж андуурч болох чимээ шуугиантай пикселүүдийг арилгаж, дүрсийг нүдний ирмэг орчим илүү гөлгөр, зөөлөн болгоно. Энэ нь зурган дээрх нүднүүдийг цаанаасаа эрч хүчээрээ ялгагдах "бөмбөрцөг" болгон гаргаж авахын тулд хийгдсэн юм. "Blobs" нь өндөр нягтралтай цагаан дүрс, арын дэвсгэр нь хар өнгөтэй байв. Дахиад жаахан хугацаа өгвөл бид дүрсийг илүү нарийвчлалтай, илүү нарийвчлалтай болгохын тулд imbinarize функцийн оронд өөр Blob дүрс хөрвүүлэлтийг ашиглах байсан боловч функцийг судалж хэрэгжүүлэхэд илүү их цаг хэрэгтэй байсан.

Алхам 5: Нүдийг тоолж, эсийн нэгдлийг тооцоол

Нүдийг тоолж, эсийн нэгдлийг тооцоол
Нүдийг тоолж, эсийн нэгдлийг тооцоол

Кодын энэ алхам дээр бид зураг дээрх нүднүүдийн тоог тоолохыг зорьсон. Бид голчлон функцуудыг ашиглан бүсийн хэсгүүдийг тооцоолсон бөгөөд хэрвээ тухайн талбай нь бидний хүссэн хил хязгаарт байхаар тооцоологдсон бол түүнийг дэд хэсэгт зурах болно. Хил хязгаарыг жижиг дуу чимээтэй пиксел эсвэл эс биш том эрчимийг арилгах зорилгоор тавьсан. Нүдний тоолуур дараа нь төлөвлөсөн центройдуудыг тоолж, тэдгээрийг for давталтын тоолуурт нэмнэ. Эсийн хэсгүүдийг тогтоосны дараа бид нийлсэн хэсгийг тооцоолох боломжтой болсон. Кодын энэ алхамын гол ач холбогдол нь эсүүдийн нэгдлийг олох явдал байсан бөгөөд энэ нь бидний кодын эцсийн зорилгын гол түлхүүр байв. Бид үүнийг блок бүр дэх пикселүүдийг (нийлбэр (allAreas)) нэгтгэн, дараа нь зургийн нийт пикселийн утгаар (numel (img)) хуваах замаар тооцоолсон. Энэ харьцаа нь бидний уулзварыг өгөх бөгөөд хэрэв энэ нь судлаачийн эсийг дамжуулах цаг хугацаанаас 80% -иас илүү гэж тогтоосон бол. Бид аль болох нарийвчлалтай, нарийвчлалтай байхыг зорьсон боловч цаг хугацаа хязгаарлагдмал байгаа тул алдаа гарсан. Хэрэв цаг хугацаа зөвшөөрвөл шүүлтүүрийн техникийг туршиж үзэхийн тулд хангалттай судалгаа хийгдээгүй байгаа тул илүү нарийвчлалтай шүүлтүүр хийх техник ба/эсвэл Hough Transform гэх мэт блокуудыг тоолох ажлыг илүү нарийвчлалтай хийх арга замыг хайж олох байсан.

Алхам 6: Эсийн бөөрөнхий байдал

Эсийн бөөрөнхий байдал
Эсийн бөөрөнхий байдал
Эсийн бөөрөнхий байдал
Эсийн бөөрөнхий байдал

Зураг дээрх бөөрөнхий хэлбэрийг хэмжихийн өмнө бид RGB -ээс саарал өнгө рүү хөрвүүлэх, бинаризац хийх, хөрвүүлэх, шүүлтүүр хийх хэрэгтэй. Шүүлтүүрийн техник нь bwareaopen функцийг ашиглаж байгаа бөгөөд энэ нь сонирхсон зургийг шүүж, нүдний хэмжээг харуулах боломжгүй хэт жижиг хэмжээтэй бүх пикселийг арилгадаг. Дискний хэлбэр ба 2 -той ойролцоо бүтцийн элементийг бүтээсэн бөгөөд энэ нь арын болон нүдний доторх цоорхойг бөглөхөд ашиглагддаг. Дараа нь бид bwboundaries функцийг ашигладаг бөгөөд үүнийг бөмбөрцгийг ул мөр болгон матрицад хадгалдаг. Дараа нь бид дүрсийг өөр өөр өнгөөр шошголж илүү тод харагдуулдаг. Дараа нь зураг дээрх объект, нүхний тоогоор ажилладаг for давталтыг ашиглан энэ массивт харгалзах блокуудын эргэн тойронд хил хязгаарыг тогтоодог. Энэ гогцоо дуусмагц зураг дээр байгаа объект, нүхний тоогоор дахин нэг давталт эхэлнэ. Энэ удаад бид массивын хэсэг гэх мэт тодорхой шинж чанарыг цуглуулж, объект, нүхний тоог агуулсан мэдээллийг хадгалдаг regionprops функцийг ашигладаг. Энэхүү мэдээллийг ашиглан бид эдгээр объектуудын талбай, периметрийг центроидын хэлбэрийг ашиглан тооцоолно. Дугуй объектын хэмжих нэгжийг тооцоолж, энэ хэмжүүрийг центродын тооцоолсон текстийн дагуу зурсны дараа үр дүнг харьцуулахын тулд босгыг тогтоодог. Эцсийн код нь зураг дээрх өөр өөр нүднүүдийн дугуй хэлбэрийг харуулах бөгөөд утгатай ойролцоо утгууд нь бусдаас илүү дугуй хэлбэртэй байх болно. 1 -ийн утга нь нүд нь төгс дугуй хэлбэртэй, дамжихад тохиромжтой нөхцөлд байгааг илэрхийлдэг.

Зөвлөмж болгож буй: