Witam
Mam przedziwny problem w wykonywaniem się programu, a przynajmniej mi się on taki wydaje.
Najpierw wywoływana jest funkcja median_filter, a z niej wywoływana jest procedura sort_array, która ma za zadanie posortować wartości w tablicy buffor. Kiedy program wchodzi do procedury sortowania zmienne "i" oraz "j" zamiast przyjąć wartości równe zero mają wartość równą 9 :-/ nie wiem dlaczego tak jest, przecież przy takim wywołaniu pętli dla zmiennej "i" powinna być podstawiona wartość 0 i tak samo powinno być dla "j", a w moim przypadku zawsze jest 9. Z góry dziękuje dla wszystkich którzy będą mieli ochotę zerknąć na ten kod i coś mi podpowiedzieć. Pozdrawiam
procedure sort_array(var buf_to_sort: TArrayMask);
var
value, i, j: Byte; // zmienne pomocnicze
begin
for i:=0 to 8 do
for j:=0 to 8 do
if buf_to_sort[j]>buf_to_sort[j+1] then
begin
value:= buf_to_sort[j];
buf_to_sort[j]:= buf_to_sort[j+1];
buf_to_sort[j+1]:= value;
end;
end;
function median_filter(im_gray: TMyImage): TMyImage;
var
h,w: Integer; // zmienne pomocnicze w zakresie h- wysokosc, w- szerokość bitmapy
buffor: TArrayMask; // przechowuje wartości aktualnie analizowanego piksela oraz pikseli z jego otoczenia
temp_array: TMyImage; // pomocnicza tablica
begin
Result:= im_gray;
temp_array:= fill_edges(im_gray);
for h := 1 to temp_array.array_height - 2 do
for w := 1 to temp_array.array_width - 2 do
begin
buffor[0]:= temp_array.array_image[w-1][h-1];
buffor[1]:= temp_array.array_image[w][h-1];
buffor[2]:=temp_array.array_image[w+1][h-1];
buffor[3]:= temp_array.array_image[w-1][h];
buffor[4]:= temp_array.array_image[w][h];
buffor[5]:=temp_array.array_image[w+1][h];
buffor[6]:= temp_array.array_image[w-1][h+1];
buffor[7]:= temp_array.array_image[w][h+1];
buffor[8]:=temp_array.array_image[w+1][h+1];
sort_array(buffor);
Result.array_image[w][h]:= buffor[4];
end;
end;