Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!

Система распознавания элементов изображения

Translated

  • Ілля Б.
    8 декабря 2023, 8:34 |

    Доброго дня. 

    Тобто Вам потрібна програма зі штучним інтелектом (нейронка) для розпізнавання судин в реальному часі? 

    Ви хочете щоб при зйомці оболонки малюнок висадився поверх зображення? 

  • Андрій Дєдов
    8 декабря 2023, 13:40 |

    Доброго дня. на цьому етапі нам необхідно:

    1. проаналізувати статичне зображення, знайти на ньому судини кон'юнктиви та "запам'ятати їх"

    2. взяти кадр з відеопотоку, проаналізувати його, знайти судини кон'юнктиви, порівняти їх із п.1, знайти відповідність, зробити висновок щодо положення ока в п.2 у порівнянні з п.1 (кут ротації ока)


    п.2 виконується для відео в реальному часі. можна на для кожного кадру, 1 раз на секунду влаштує. але це залежить від обчислювальної потужності - тобто можна дивитися по сутуації.


    бажано було би аналізувати НЕ судини кон'юнктиви, а малюнок райдужки, проте це ще складніше через зміни малюнку під час розширення зіниці. хоча, нам ніхто не заважає спробувати, якщо будемо мати алгоритм розпізнавання судин кон'юнктиви

  • Игорь Ляльченко
    8 декабря 2023, 14:43 |

    По пункту 1

    Перетворюємо зображення (не одне, бажано чим більше тим краще, можливо і сотні і тисячі) у чорно-біле, змінюємо контраст і вже після цього можна на великій кількості експериментувати з алгоритмом, відпрацьовуючи загальні дії, та описуючи винятки. Фактично, якщо сучасною мовою, це створення  нейрону для вузькопрофільної нейро-мережи, хоча скоріш за все кількість шарів нейронів та їх кількість буде поменше, а система загалом не такою прожерливою, але з аналогєю у попередньому повідомленні згоден - це таки вона). 


    Можна також спробувати навчити існуючу нейронну мережу. Залежить від вимог що до залежності від сторонніх розробок


    Після п1, пункт 2 не має викликати значних складнощів


    Що до складнощів аналізу статичного чи динамічного зображення, наприклад при розширенні зіниці, то фактично складнощів тут нема, тут будуть вимоги що до потужності компа і можливо значні, оскільки все може звестися до обробки просто нового кадра у реальному часі. 


    То ж по обсягу виконання такої задачі з нуля може розтягнутися від півроку і більше легко. Можливо використання існуючих нейронних мереж, хоч і викличе програмну залежність від інших сервісів, але скоріш за все буде швидше.

  • Андрій Дєдов
    8 декабря 2023, 15:13 |

    Щодо залежності від існуючих рішень - це виключено. Продукт має працювати в ізольованому середовищі.

    Щодо райдужки - питання не в тому, що зображення малюнку стає менш інформативним. Питання в тому, що сам малюнок значно змінюється завдяки розширенню зіниці

  • Андрій Дєдов
    8 декабря 2023, 19:22 |

    image

    так виглядає око на момент початку операції. рожеве по периметру - кон'юнктива з судинами. в центрі - (майже) кругла зініця. все, що від периферії до зіниці - райдужка


  • Андрій Дєдов
    8 декабря 2023, 19:24 |

    image

    Після розширення зіниці вигляд такий. малюнок райдужки змінився

  • Андрій Дєдов
    8 декабря 2023, 19:25 |

    image

    На момент закінчення операції око виглядає так.


    Тобто, треба враховувати можливості камери та детальність зображення

  • Андрій Дєдов
    8 декабря 2023, 19:35 |

    хоча, є й добрі новини. ці картинки - скріншоти із збереженого відео. тобто - пакованого. 

    живе відео виглядає трохи привабливішим

  • Андрій Дєдов
    8 декабря 2023, 19:35 |

    хоча, є й добрі новини. ці картинки - скріншоти із збереженого відео. тобто - пакованого. 

    живе відео виглядає трохи привабливішим

  • Игорь Ляльченко
    9 декабря 2023, 5:27 |

    Це звичайна ситуація - на різних кадрах різні ділянки трішки відображаються по різному і складається загальне враження більш чіткого зображення. Ефект звісно можна використати на користь - складанням декількох кадрів до купи і вирізаючи з кожного те де перехід більш контрастний. 

    Теоретично (як що питання саме теоретичне) взагалі скоріше  можливе чим ні. 

    На скільки практично результат відповідатиме потребам чи матиме занадто великі похибки - ось це вже інше, більш цікаве питання.  

  • Игорь Ляльченко
    9 декабря 2023, 5:58 |

    Наприклад блік від камери на кон'юктиві майже зникає при маніпуляціях з кольорами-контрастом, а от частина контуру самого бліку  слабо відрізняється від судин.. Не те що б це було проблемою - можна і з декількох варіантів виділити наприклад бліки, але чи не втратиться таким чином якась судинка поруч. 


    Отже досить легко розділити програмно око на три зони, бо вони мають достатньо чіткі контури, але виявити де судини а де артефакти на кон'юктиві принаймі сходу вже не вдалось. 


    На скільки вдасться досконало відпрацювати алгоритм і після скількох спроб, чи скількох сот, чи тисяч спроб (у тому числі і з вашого боку безпосередньо оброблених фото шляхом нанесення на них відповідних малюнків поверх зображення для порівняння вірного результату з тим що надасть алгоритм) вже питання цікавеньке таке собі. Тут тільки (на мій погляд) експеримент і час може щось прояснити. 

  • Андрій Дєдов
    17 декабря 2023, 23:06 |

    отже, я трохи підведу підсумки.

    1. кінцева мета всього проєкту - відстеження КУТА повороту ока (кут циклоторсії) в реальному часі. тобто, на прикладі картинок вище - проворот ока за годинниковою стрілкою або проти. так от мета - вимірювання цього кута в реальному часі. 

    2. для цього ми потребуємо орієнтири - це можуть бути:

    2.1. судини кон'юнктиви або 

    2.2.малюнок райдужки.

    який саме орієнтир буде використано - залежить від можливостей діагностичного устаткування, наразі це невідомо.

    3. перед початком операції ми фотографуємо око й використувуємо цю фотку, як стартову. тобто, знаходимо на ній судини (п. 2.1.) або малюнок (п 2.2.) за допомогою нейромережі №1.

    3.1. якщо ми експлуатуємо п.2.2 ми маємо враховувати, що під час розширення зіниці малюнок райдужки значно змінюється, хоча це відбувається згідно певних принципів, але деформація значна. тому маємо за допомогою нейромережі №2 виявити закономірності зміни малюнку райдужки при розширенні зіниці.

    4. під час операції ми беремо відео з камери мікроскопу й в реальному часі порівнюємо за допомогою нейромережі №3 з декількома варіантами (провернутими на -20, -19, -18 ... +18, +19, +20 градусів) з п.3. й виявляємо найбільш співпадаючий варіант. отриманий кут і буде відповідю на п.1.

  • Игорь Ляльченко
    17 декабря 2023, 23:57 |

    Трішки свою точку зору висловлю російською, що б мову не калічити та зміст не псувати.


    п.2 в идеале все следует учитывать и зрачок (его границы самые четкие) и радужка и если есть четко выделенные сосуды, которые однозначно удается определить то и они тоже.

    Соответственно в качестве стартовых параметров будет фото глаза или первый кадр с камеры, а далее в качестве точки отсчёта уже каждый кадр или каждый десятый кадр от камеры будет заменять начальный (предполагая что резких изменений за доли секунды в рисунке радужки и размере зрачка не произойдет).. плюс расстояние от камеры до глаза плюс диаметр глазного яблока если уж так совсем точно считать (по кадрам можно определить угловое расстояние на сколько сдвинулся глаз и в какую сторону - фактическое же,  зависит от расстояния до камеры, а уже от фактического и радиуса глаза можно считать угол его поворота)


    п3. На сколько быстро меняется размер зрачка и рисунок радужки? Способен ли он измениться существенно за 1/10 или 1/25 секунды? Если нет, то базовый первый снимок просто меняется на новый и следующее вращение глазного яблока вычисляется относительно последнего кадра и прибавляется к предыдущему для получения абсолютного значения. Если способен то тогда да, надо думать лучше.


    п4. Фото перед операцией и видео с камеры микроскопа выполняются различными камерами с разных расстояний или это одна и та же камера, просто до того как началась операция этой же камерой делается предварительное фото?


    Камера микроскопа во время операции находится неподвижно, на одном и том же расстоянии от глаза?

  • Андрій Дєдов
    17 декабря 2023, 23:22 |

    функціонал нейромереж:

    №. 1. на вході - зображення ока попіксельно. на виході:

    1.1. якщо кон'юнктива - ознака, чи є цей піксель зображенням судини кон'юнктиви, чи ні.

    1.2. якщо райдужка - ознака, чи видноситься ций піксель до райдужки, чи ні


    №2. на вході - зображення райдужки на вузьку зіницю попіксельно. на виході - зображення райдужки на широку зіницю попіксельно.


    №3. 

    3.1. якщо кон'юнктива - то в нейромережу №3 заливаємо результат від №1.1 (на вході первинна фотка) ТА результат №1.1 (на вході кадр з відео).

    3.2. якщо райдужка - то в нейромережу №3 заливаємо вирізане зображення райдужки на основі "маски" з №1.2. заливаємо два зображення - з первинної фотки та ж відео-кадру.

    на виході - коефіцієнт співпадіння між двома вхідними картинками

  • Игорь Ляльченко
    18 декабря 2023, 0:04 |

    Так, загальный алгоритм нейромережи приблизно можна і так описати. Хоч як що вже дуже прискіпливо то він дещо відрізняється від алгоритму роботи просто програми - за рахунок великого обсягу данних при навчанні стає дещо менш строгий і залежно від вхідних параметрів може комбінувати випадки і дії з огляду на статистику "як буває". Доречі за рахунок саме цього нейро-мережи більш гнучкі чим просто алгоритм "якщо-тоді", але й потребують більше часу для їх навчання, то б то налаштування параметрів 

  • Игорь Ляльченко
    18 декабря 2023, 0:15 |

    Тут ще такий нюанс, що і навчання такої нейронної мережі і її створеня слід було б проводити безпосередньо у клініці, де можна і питання поставити вчасно і є якійсь обсяг статистичних фото-відео, які ще й поновлюються, поповнюються. 


    То б то звісно теоретично можна взяти якусь там наприклад мою камеру.. крутити перед нею моїм очним яблуком - пару діб без сна і судини будуть дуже красиві.. а як що якійсь атропін туди заливати та світло то в око направляти то ні... але щось підказує що такий підхід дещо на курсову потягне максимум, але сам би я хірургу з таким програмним забезпеченням живим не дався )) 

  • Игорь Ляльченко
    18 декабря 2023, 1:03 |

    То б то що я маю на увазі, кажучи про різницю між ПЗ класичним та нейромережею. Наведений алгоритм цілком лягає під класичне ПЗ.


    Нейро-мережи працюють зовсім трішки інакше - на вхід подається параметри. У нашому випадку наприклад це відстані, радіуси, переміщення камери мікроскопу, якщо вони є і безпосередньо зображення.

    Далі починається гра "відгадай відповідь". У процесі цієї гри ПЗ залежно від типу нейро-мережи чи перебирає та комбінує закладені алгоритми (не тільки наведені вами, а й зовсім примітивні, рівня простих алгебраїчних чи логічних операцій над параметрами), чи підбирає функцію перетворення цих параметрів у якісь значення (веса) для статичних алгоритмів, відкидаючи ті варіанти де результат хибний. І так шляхом проб підбирається чи вірний алгоритм чи вірні веса (параметри) для заздалегідь заданих функцій чи все разом, так повторюється аж доки всі відповіді що були при "навчанні", а також всі що надалі заданої у якості "екзамену" є цілком вірні, чи похибка задовольняє користувача.


    Ось у цьому різниця між ПЗ й нейромережею - остання чи то за рахунок параметрів чи то за рахунок вибору комбінацій перетворень і алгоритмів, базуючись на статистиці модифікує дії і кінцевий алгоритм може дуже відрізняти від того як уявлялось спочатку. Фактично кінцевий алгоритм взагалі не закладається, а є результатом комбінаторіки з єдиною метою - що б відповідь на виході співпадала з тим що є насправді.


    Отже немає сенсу розділяти нейро-мережи на мій погляд. Нейро-мережа фактично має бути одна.  Є вхідні параметри - є вихідні результати. Одна, відносно невелика за обсягом, з огляду на вузький профіль, нейро-мережа.

Актуальные фриланс-проекты в категории C и C++

Реверс-инжиниринг консольных утилит для опроса контроллеров SSD (Flash ID)

1. Цель работы Выделение программного интерфейса (API) взаимодействия с контроллерами SSD/NVMe из предоставленного набора консольных утилит (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron и др.). Результатом должно стать рабочий код на языке C/C++ или точная…

C и C++Десктопные приложения ∙ 11 дней 14 часов назад ∙ 6 ставок

Разработка карты семян Minecraft Java / просмотрщика семян для сайта

Разработка карты семян Minecraft Java / Seed Viewer для сайтаОписание проекта Необходимо разработать браузерный инструмент Minecraft Java Seed Map / Seed Viewer, который будет работать на нашем сайте и позволит пользователю ввести семя Minecraft Java Edition и просмотреть…

C и C++HTML и CSS верстка ∙ 11 дней 21 час назад ∙ 17 ставок

Заказчик
Андрій Дєдов
Украина Запорожье  2  0
Проект опубликован
2 года назад
119 просмотров