У меня есть следующий код RLSA в matlab. Суть этого алгоритма заключается в том, что он пытается подключить область с заданным интервалом (порогом), например, при определении текстовых областей (поскольку текст в основном фиксирован конкретный интервал в большинстве случаев на изображениях), он пытается присоединиться к ним, чтобы при выполнении некоторых морфологических операций они хорошо справлялись с определением этих областей.Алгоритм сглаживания длины (RLSA) в MATLAB
1.function result=RLSA(image,hor_thresh)
2. zeros_count=0;
3. one_flag=0;
4. hor_image=image;
5. [m,n]=size(image);
6. for i=1:m
7. for j=1:n
8. if(image(i,j)==1)
9. if(one_flag==1)
10. if(zeros_count<=hor_thresh)
11. hor_image(i,j-zeros_count:j-1)=1;
12. else
13. one_flag=0;
14. end
15. zeros_count=0;
16. end
17. one_flag=1;
18. else
19. if(one_flag==1)
20. zeros_count=zeros_count+1;
21. end
22. end
23. end
24. end
25. result= hor_image;
26. end
выше MATLAB код был взят из следующих сайтов
Attempt to implementation Running Length Smoothing Algorithm in C++
Более подробное описание здесь
Приведенный выше код не работает для всех порогового values.For например о вводе порогового значения = 20 я получил следующие ошибки
Subscript indices must either be real positive integers or logicals.
Error in RLSA (line 11)
hor_image(i,j-zeros_count:j-1)=1;
Может кто-нибудь объяснить мне работу алгоритма на изображениях с текстом и, почему этот код Безразлично Не работает ли для всех пороговых значений? Кроме того, мне нужно сделать два прохода (как описано в приведенных ссылках) этого кода, один для горизонтального и один для вертикального и логического, и они или упомянутый код уже позаботились об этом?
Отладчик, вероятно, скажет вам, если вы установите точку останова в строке 11 и посмотрите значения 'j' и' zeros_count'. – beaker