Witam po długiej przerwie, dawno mnie tu nie było. Mój problem dotyczy programu Scilab i przetwarzania grafiki z wykorzystaniem toolboxu SIVP (http://sivp.sourceforge.net/). Chciałem napisać kod przetwarzający 24-bitową grafikę w kolorze na 8-bitową grafikę czarno-białą. W tym celu napisałem taki kod:

clear all, clc, clf // wyczyść wszystko
obraz_we=imread('obraz_rgb.bmp'); // wczytaj obraz_we

imshow(obraz_we); // pokaż obraz_we

[wys, szer, gl]=size(obraz_we) //pobierz i wypisz rozmiar obrazu
obraz_wy=zeros(wys,szer); // utwórz macierz o wym wys x szer.

for w=1:wys
  for s=1:szer
    r=obraz_we(w,s,1); // pobierz współrzędne koloru
    g=obraz_we(w,s,2);
    b=obraz_we(w,s,3);
    sr=round((r+g+b)/3); // wylicz odcień szarości
    obraz_wy(w,s)=sr; // przypisz wartość do obraz_wy         (?)
  end;
end;

obraz_we - obraz 24-bit na wejściu, wczytywany z pliku bmp.
obraz_we - obraz 8-bit na wyjściu.

Problem jest z linijką oznaczoną symbolem (?). Jeśli ją zakomentuję, kod wykonuje się do końca, jeśli nie - skrypt się zawiesza. Co może być tego przyczyną? Pozdrawiam i z góry dzięki za odpowiedzi.

EDIT (2008-08-13 10:21) : znalazłem już przyczynę. Kazałem skryptowi wypisywać nr przetwarzanego wiersza, za każdym razem jak się zmieni. Okazuje się, że skrypt dziala ale jest okropnie powolny. Dla grafiki o wym 512 x 512 jeden wiersz wykonuje się około 10 sekund, co praktycznie przekreśla zastosowanie programu jeśli chodzi o przetwarzanie wiekszych grafik, czy zdjęć w kolorze. Bo na przykład binaryzacja 8bitowego zdjęcia (czarno-białe) o wymiarach 512x512 odbywa się w całkiem przyzwoitym czasie.