Пожалуй, имеет смысл упомянуть об http://volnitsky.com/project/str_search/. Автор утверждает, что создал самый быстрый среди существующих алгоритм поиска подстроки в строке.
S[R, C] — входное полутоновое изображение
NLINES — количество строк на изображении
NPIXELS — количество пикселов в строке изображения
A[DQ, THETAQ] — аккумуляторный массив
DQ — дискретное расстояние от прямой до начала координат
THETAQ — дискретный угол между направлением строк и перпундикуляром к прямой, опущенным их начала координат
procedure accumulate_line(S, A);
{
A := 0;
PTLIST := 0;
for R := 1 to NLINES for C := 1 to NPIXELS
{
DR := row_gradient(S, R, C);
DC := col_gradient(S, R, C);
GMAG := gradient(DR, DC);
if GMAG > gradient_treshold
{
THETA := atan2(DR, DC);
THETAQ := quantize_angle(THETA);
D := abs(C * cos(THETAQ) — R * sin(THETAQ));
DQ := quantize_distance(D);
Чего сходу еще хотелось из бы функций (кроме вышеперечисленных пожеланий):
В конце вы не сказали, что уходите с SVN. Почему?
Милое название PHP клиента :)
S[R, C] — входное полутоновое изображение
NLINES — количество строк на изображении
NPIXELS — количество пикселов в строке изображения
A[DQ, THETAQ] — аккумуляторный массив
DQ — дискретное расстояние от прямой до начала координат
THETAQ — дискретный угол между направлением строк и перпундикуляром к прямой, опущенным их начала координат
procedure accumulate_line(S, A);
{
A := 0;
PTLIST := 0;
for R := 1 to NLINES
for C := 1 to NPIXELS
{
DR := row_gradient(S, R, C);
DC := col_gradient(S, R, C);
GMAG := gradient(DR, DC);
if GMAG > gradient_treshold
{
THETA := atan2(DR, DC);
THETAQ := quantize_angle(THETA);
D := abs(C * cos(THETAQ) — R * sin(THETAQ));
DQ := quantize_distance(D);
A[DQ, THETAQ] := A[DQ, THETAQ] + GMAG;
PTLIST(DQ, THETAQ) := append(PTLIST(DW, THETAQ), [R, C]);
}
}
}