Морфологический фильтр: эрозия
От: Serg_M  
Дата: 07.06.04 12:58
Оценка:
Мастера подскажите пожалуйста как написать морфологический фильтр: эрозия.
Эрозия — осуществляется путем операции логического "И" между состоящей из единиц маской S размером n*n и накрываемым маской фрагментом бинарно квантованного изображения L.
Помогите пожалуйста.
Re: Морфологический фильтр: эрозия
От: bask1907  
Дата: 07.06.04 13:07
Оценка:
Здравствуйте, Serg_M, Вы писали:

S_M>Мастера подскажите пожалуйста как написать морфологический фильтр: эрозия.

S_M>Эрозия — осуществляется путем операции логического "И" между состоящей из единиц маской S размером n*n и накрываемым маской фрагментом бинарно квантованного изображения L.
S_M>Помогите пожалуйста.

Эрозия, как и дилация относятся к разновидности фильтров, применяемых к изображению.
Надо в цикле для каждого пикселя изображения "прогнать" этот фильтр (маску), т.е.:
for j:=0 to Ymax-1 do
for i:=0 to Xmax-1 do
begin
sum := 0;
for jj=-(n div 2) to (n div 2) do
for ii=-(n div 2) to (n div 2) do
begin
x = i+ii;
y = j+jj;
...
c = Pixel[x,y];
sum = sum+c;
...
end;
newC = sum/koeff;
Pixel[i,j] := newC;
end;

Насколько помню, вроде, так. Надо только правильно подобрать коэффициент и проследить, чтобы пиксели были всё время внутри изображения, а также newC — в допустимом диапазоне.
Re: Морфологический фильтр: эрозия
От: bask1907  
Дата: 07.06.04 13:11
Оценка:
Сорри, немножко обманул:
вместо строки: sum := sum+c;
надо записать: sum := sum+c*mask[ii+n div 2,jj+n div 2];
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.