На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Алгоритмы определения расфокусировки изображения?
    Народ!!! УМОЛЯЮ,...
    помогите, кто чем сможет!!!
    У меня маленький деть и ноль знаний по цифровой обработке изображения.
    А тема диплома из этой "оперы". Я Вас очень прощу помочь, кто чем сможет - хоть ссылки на инфу кинте...а то времени с дитем искать нету((( ...программировать ваще разучилась...или не умела?
    История такая: есть ГОК, где добывают руду, потом руду обогащают, потом дробят до состояния муки. Из этой муки делают окатыши. Задание такое: окатыши идут по конвееру, их надо снимать камерой и сравнивать полученную картинку с эталонной на наличие расхождения параметров, например размера. Надо написать алгоритм расфокусировки изображения.. Подскажите какие есть способы этой расфокусировки, кроме Фурье...препод хочет не Фурье...
    Но можно и Фурье  - это лучше чем ничего...
    Заранее благодарна
      Так что - нужно управлять видеокамерой, обеспечивая фокусировку получаемого
      изображения или пытаться как-то программно сфокусировать
      уже полученное изображение ?
      Если первое - ищи информацию на тему "экстремальное регулирование",
      а если второе - можно применять двумерную фильтрацию (сверткой),
      либо производить фильтрацию с использованием двумерного Фурье-
      либо вейвлет- преобразования.
        Надо программно расфокусировать полученное изображение и эталонное, потом их сравнить и если расхождение больше какой-то установленной цифры, выдать сигнал...
        А может, кто прогу поможет написать?
          посмотри http://algolist.manual.ru/graphics/filter/index.php

          про общие принципы фильтрации и про размывание. В данном случае нужно именно размывание.
            Просто размыть изображение - дело нехитрое, а вот сделать прогу,
            которая бы принимала изображение чего-то наваленного россыпью
            и движущегося на конвейере и сравнивала все это с каким-то эталоном...
            Это - совсем другое дело.
            Кстати, можно попробовать сравнивать положение пиков в двумерных
            Фурье- спектрах эталона и образца.
              я не зню, движущуюся картинку надо сравнивать или просто кадры...
              скорее всего движущуюся
                наверное по минимальности ширины линий? Или...
                  Честно говоря, не очень понял что именно нужно. На сколько я представляю - тебе нужно просечь то что руда фигово измельчена, и если это так, то устроить большой шухер. Дело достойное.

                  Можно сделать так:

                  1: Уменьшаешь изображение до N-х размеров(в зависимости от допустимого размера частицы), используя, например, бикубическую интерполяцию. На этом этапе все мелкие комочки руды сольются в один цвет.
                  2: Проверяешь все точки изображения - находишь количество точек цвет которых слишком сильно отличается от допустимого цвета руды.
                  3: Если таких точек слишком много, то Alarm и не спать.

                  Вот и все. И так с каждым кадром.
                    Вот оказывается все как: (после беседы с преподом, который сам толком не знает что от меня хочет)
                    есть конвеер с окатышами, изображение которых снимается камерой. Окатыши, эти фиговы, должны быть определенного размера. Задача состоит в том, что надо определить произошла расфокусировка камеры, снимающей конвеер или нет.
                    Предлагается преподом это сделать так: (приветствуются и другие решения)
                    есть эталонное изображение - т.е изображение, где все эти шарики практически идеальны. Мы раскладываем это изображение в спектр. Получаем гистограмму. Затем накладываем на эталонное изображение маску: получаем расфокусированное изображение. Снова раскладываем в спектр. и так N раз (пока не надоест наверно) - самой надо определить сколько раз. Потом берем другую маску и тоже самое проделываем (кол-во масок тоже надо определить самой). По полученным гистограммам надо визуально определить какие частоты влияют на расфокусировку изображения, на каком этапе изображение можно считать не резким. Из этой визуальной оценки определяем диапазон нерезкозти - так его что ли назвать - т.е. в реальной жизни шарики не эталоны, т.е расхождение с эталоном все равно будет, надо определить только на сколько может отличаться реальная картинка от идеальной.  
                    Затем работаем с реальным изображением - раскладываем в спектр - сравниваем с эталоном: совпало, значит все супер - камера работает нормально, не совпало - значит надо смотреть - попло это в допустимый диапазон нерезкозти или нет, если не попало, то выдаем сообщение, что камера расфокусировалась.

                    Воот!!!
                    Может есть какие у кого мысли по этому поводу? Делитесь не стесняйтесь, а то я вот в панике, думаю не пойти ли в академ...хоть и осталось тока диплом защитить.

                    Человеки!!! Помогите пожалуйста!!! Тяжело мне с грудным ребенком...а дбить универ надо((((
                      Вот значит все как. На счет диплома - сочуствую, сам получил 2 месяца назад, так что бессонные ночи и мегалитры кофе все еще в памяти \%). Но тебе кофе вдвойне противопаказано, а то ведь ребенок вместо молока будет куппучино прихлебывать.

                      В общем, тебе нужна какая то функция, дающая оценку размытости изображения. При этом тебе известно значение этой функции для сфокусированного. Как вариант - этой функцией может быть сумма отличий каждой точки изображения от четырех соседних точек. У размытого изображения различия будут небольшими, у сфокусированного соотвественно наоборот.

                      Соответственно разок, для себя запускаешь эту функцию для заведомо сфокусированного изображения, записываешь на бумажку значение которое она выдаст. А в программе, выполняешь функцию для каждого кадра, и сравниваешь получаемое значение с тем что ты перепишешь с бумажки. Если расхождение большое - значит камера расфокусировалась.
                        помоему вообще незачем мучаться с расфокусировкой камеры. насколько я понимаю, камера должна быть накрепко привинченной к пъедесталу и свысока взирать на окатышей раз и навсегда сфокусированным взором. более того, ежели окатыши идут последовательно с достаточно большим интервалом, даже при вконец (в разумных пределах ;D ) расфокусированной камере можно довольно надёжно определить их размер. просто считаешь среднюю яркость по всему изображению (вариант: считать количество тех точек, где яркость больше пороговой - он мне больше нравится). соответственно график этой функции от времени будет выглядеть приблизительно так:

                                _______                 ______
                               /           \              /           \
                        ____/              \_______/              \_____........

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

                        что касается фурье, то препод по-своему прав - там слишком большой объём вычислений.

                        ежели уж тебе настолько сильно приспичило нахождение расфокусировки, то слушай моё предложение. надо найти среднее по изображению значение квадрата функции, представляющей собой разность яркости точки с усреднённой яркостью четырёх её соседей. если камера расфокусировалась, то эта величина будет маленькой в силу усреднения яркостей.

                        зы. тут я заметил, что умные люди уже предложили вышеописанную функцию, поэтому, чтобы как-то отличиться, предлагаю ещё одно усовершенствование: вычислять разность не с четырьмя, а с двумя соседями - справа и слева, ибо по идее размытие изотропно. причём надо вычислять не просто разность, а КВАДРАТ этой разности, аналогично тому, как это происходит в математической статистике. замечу также, что разность всего лишь с одной точкой не подойдёт, ибо на эту разность оказывает сильное влияние общий градиент яркости.
                        Сообщение отредактировано: wormball -
                          Вот еще инфа по заданию: вспомнил мой любимый "руководитель" о такой им же опубликованной некогда статье)))

                          СПОСОБ ОЦЕНКИ ГРАНСОСТАВА СЫРЫХ ЖЕЛЕЗОРУДНЫХ ОКАТЫШЕЙ
                          В металлургической промышленности всегда актуально сокращение материальных и энергетических ресурсов. В частности, такой задачей является экономия компонентов шихтоподготовки железорудных окатышей и сокращение брака при их окомковании. Для ее решения необходимо оперативно оценивать гранулометрический состав сырых окатышей. Существующие способы оценки обладают достаточно высокой погрешностью (20-22\%).

                          Предлагается использовать способ оценки грансостава, основанный на использовании системы технического зрения, состоящей из телевизионной камеры, цифрового видеоввода (видеобластер) и компьютера. Принцип действия системы заключается в следующем. С помощью телевизионной камеры с движущегося транспортера снимается изображение верхнего слоя окатышей. Учитывая небольшую глубину слоя окатышей (5-6 см.) и случайный угол скатывания сырых окатышей с турели окомкователя можно утверждать, что окатыши перемешаны равномерно и изображение верхнего слоя адекватно отображает всю массу окатышей на транспортере. Полученный телевизионный кадр вводится в память компьютера при помощи видеобластера, который преобразует его в матрицу размером 256х256 элементов изображения. Каждый элемент квантуется на 64 уровня серого. Полученная матрица обрабатывается методами цифровой обработки изображений. При этом считается, что основным признаком окатыша является так называемый яркостной блик, от центра которого производится сканирование по 8 или 16 направлениям с целью определения радиусов окатыша. Полученная в результате сканирования последовательность, для снижения погрешности подвергается медианной обработке. Перед сканированием для удаления высокочастотного шума производится низкочастотная фильтрация при помощи маски размером 7х7. Результатом работы является гистограмма распределения диаметров окатышей для конкретного кадра. Как показали испытания, новый способ имеет погрешность измерения около 10\%. Усреднение гистограмм по нескольким кадрам дает объективную оценку грансостава окатышей. Оперативная информация о грансоставе сырых окатышей позволит создать систему автоматизированного управления процессом окомкования.
                            Дак всё таки, что тебе нужно? Определить расфокусировалась ли камера, или узнать средний размер окатышей?
                              2татулька

                              чойто я не пойму, твой препод уже написал подобную программу или нет?

                              я думаю, что тут вообще можно обойтись без оценки размеров по 8 или 16 направлениям. просто надо усреднить изображение так, чтобы "средний" окатыш занимал около 8 точек в диаметре, и подсчитать кол-во максимумов яркости (точек, чья яркость больше яркости любого из 8 её соседей). радиус окатыша будет обратно пропорционален данной функции:

                                 R=k/N,

                              где k - козффициент, вообще говоря, определяемый экспериментально.

                              что же касается того, чтобы эту программу написали за тебя, тут возникает ряд вопросов. на каком языке? надо ли программно обращаться к камере или достаточно написать процедуру вроде function r(a: array[0..255, 0..255] of integer)? и вообще, ты бы прислала образец фотографии поля зрения камеры, ведь оно может быть совсем не таким, как я его себе представляю, а от этого зависит способ решения.

                              зы. я бы такие вещи не слал в приват, а писал прямо тут
                                **Дак всё таки, что тебе нужно? Определить расфокусировалась ли камера, или узнать средний размер окатышей?

                                Сама задаюсь этим вопросом...каждый раз разное мой дяденька хочет))
                                В ПОСЛЕДНИЙ раз вроде сошлись на определении расфокусировки камеры.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0793 ]   [ 15 queries used ]   [ Generated: 6.10.26, 00:49 GMT ]