реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Подобие матриц (картинок), критерий подобия
Punk
сообщение Mar 22 2013, 02:20
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Цитата(TSerg @ Mar 21 2013, 16:58) *
***************************
Вот такой метод должен работать:

- находим геометрические центры областей со знаком "плюс" и со знаком "минус"


Будьте добры, поясните нахождение геометрических центров, или укажите что почитать.

Вот это оно? http://en.wikipedia.org/wiki/Geometric_median

Сообщение отредактировал Punk - Mar 22 2013, 02:24
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Mar 22 2013, 05:47
Сообщение #17





Guests






Сначала уточню по вычитанию битовых изображений pixLeft[] и pixRight[]:

Логически раскрашиваем разностное изображение pixRes[] следующим образом:
(псевдокод аля Паскаль)

Это необходимо делать при частичном перекрытии объектом самого себя, что не исключено.

if (pixLeft[i,j] = 0) and pixRight[i,j] = 0 then pixRes[i,j] := clWhite;
if (pixLeft[i,j] = 1) and pixRight[i,j] = 1 then pixRes[i,j] := clBlack;
if (pixLeft[i,j] > pixRight[i,j]) then pixRes[i,j] := clRed;
if (pixLeft[i,j] < pixRight[i,j]) then pixRes[i,j] := clBlue;

cl* - условные "цвета" пикселей разностного изображения.

Определение центра тяжести или геометрическиго центра, что для битовых одно и то же.

Для "компактных" объектов может подойти примитивный способ:
X := (Xmin + Xmax)/2;
Y := (Ymin + Ymax)/2;

Но лучше, через дискретное интегрирование:
Координаты ц.т. изображений L и R находим как сумму координат поделенную на число точек:

cntL: integer; // число точек "левого" объекта - площадь в пикселях
cntR: integer; // число точек "правого" объекта - площадь в пикселях
crdLX, crdRX: integer; // координаты ц.т. "левого" объекта, pix
crdLY, crdRY: integer; // координаты ц.т. "правого" объекта, pix


for i := 0 to W-1
for j := 0 to H-1 do begin

if (pixRes[i,j] = clRed) or (pixRes[i,j] = clBlack) then begin
crdLX := crdLX + i + 1; crdLY := crdLY + j + 1;
Inc(cntL);
end;

if (pixRes[i,j] = clBlue) or (pixRes[i,j] = clBlack) then begin
crdRX := crdRX + i + 1; crdRY := crdRY + j + 1;
Inc(cntR);
end;

end;

if cnt* > 0 then
crd* := crd* / cnt*; // для приведения ц.т. в масштаб изображения

***
Пример детектирования расстояния
Shift - установленный сдвиг
Calc - вычисленный по алгоритму выше.



P.S.
ТС задал явные ограничения на мощность MCU и свои возможности, потому предлагается легкий алгоритм, как для MCU, так и для него.
Сложность пропорциональна N. sm.gif

***
Пример графика заданного и найденного сдвигов
Наблюдаем хорошую линейность и точность до 60 pix ( после 60 pix - выход за границы и вычисления некорректны )

Go to the top of the page
 
+Quote Post
haker_fox
сообщение Mar 22 2013, 06:44
Сообщение #18


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Punk @ Mar 19 2013, 13:47) *
С уважением.

Добрый день! Почитай о функции корреляции. В книге "Без паники! Цифровая обработка сигналов", этот вопрос очень подробно рассмотрен.

QUOTE (Punk @ Mar 19 2013, 13:47) *
С уважением.

Добрый день! Почитайте о функции корреляции. В книге "Без паники! Цифровая обработка сигналов", этот вопрос очень подробно рассмотрен.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Mar 22 2013, 11:01
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(Punk @ Mar 19 2013, 09:47) *
Здравствуйте, далек от математики, не обессудьте.
Озадачился на выходных такой проблемой: Как установить подобие двух маленьких картинок...


Есть довольно много методов распознавания образов, которые базируются на методах многомерной статистики.
К сожалению, это гольная математика, поэтому, даже не знаю, как объяснять дальше....
Go to the top of the page
 
+Quote Post
Punk
сообщение Mar 23 2013, 10:51
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Цитата(AndreyVN @ Mar 22 2013, 14:01) *
Есть довольно много методов распознавания образов, которые базируются на методах многомерной статистики.
К сожалению, это гольная математика, поэтому, даже не знаю, как объяснять дальше....

здесь я распозновать ничего не буду ибо мк не вытянет. Сегодня запустил распознавание образов на OMAP3530, он и то на своих 700х МГц подтормаживает, чего уж говорить о 8ми битниках.

Буду пробовать метод предложенный TSerg
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Mar 23 2013, 13:05
Сообщение #21





Guests






Цитата(Punk @ Mar 23 2013, 14:51) *
Буду пробовать метод предложенный TSerg


Что непонятно - спрашивайте в этой ветке.
Алгоритм рабочий, но с ограничениями (примеры его работы я показал визуально).
Есть ньюансы по выбору метода бинаризации и помехоустойчивости.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01431 секунд с 7
ELECTRONIX ©2004-2016