Вниз
Скачать: CL | DM;

Фильтры bmp-изображения   Найти похожие ветки 

 
Angela_   (2004-12-01 21:45) [0]

Уважаемые мастера!
Подскажите, как мне написать фильтр шумов bmp-изображения,
низкочастотный и высокочастотный фильтры?
Буду благодарна, если вышлите или приведёте примерчик.
А то что-то никак!


 
programania ©   (2004-12-02 21:32) [1]

Если под низкочастотным фильтром
понимается фильтр пропускающий низкие частоты,
тогда это размытие или blur
он расчитывает среднее значение для пиксела
из тех что рядом проще всего так:

for y:=1 to h do for x:=1 to w do begin
 s:=0; q:=0;
 for yy:=y-d to y+d do for xx:=x-d to x+d do begin
    if (yy>0)and(yy<=h)and(xx>0)and(xx<=w) then begin
       inc(s,b[yy,xx]); inc(q);
    end;
 end;
 b[y,x]:=s div q;
end;
end;

h,w-размеры, d=1,2,3...- степень размытия
b массив яркостей пикселов или цветов
для больших d,h,w работает медлено,
для ускорения можно размыть сначала по строкам
потом по столбцам или есть сложнее, быстрее и качественее.

Если из исходного изображения вычесть размытое
останутся мелкие детали и резкие границы
т.е. получится высокочастотный фильтр.

Шумы bmp-изображения обычно мелкие,
поэтому от них можно избавиться размыв изображение,
однако чтобы не потерять общую резкость
это нужно делать только там где нет резких
границ крупных деталей причем учитывать это плавно.
Этого можно добиться используя размытие разной силы.
Как это делается можно посмотреть в photoshop:
"фильтр,шум,пыль и помехи, smart blur", acdsee(fotocanvas), neatImage.com
Для специфических шумов и помех можно придумать
что-то посложнее.


 
Fenik   (2004-12-04 21:48) [2]

>programania ©  (02.12.04 21:32) [1]

Шумы убираются не размытием.
Просто берутся пикселы вокруг исходного (3х3, 5х5, 7х7 или 9х9), сортируются по каждому компоненты RGB и присваюется среднее значение исходному пикселу.


 
Fenik   (2004-12-04 21:50) [3]

>Fenik  (04.12.04 21:48) [2]
>присваюется среднее значение исходному пикселу.

Среднее - значит не среднеарифметическое, а среднее в отсортированном списке.


 
programania ©   (2004-12-06 02:00) [4]

>Fenik   (04.12.04 21:50) [3]
Спасибо за сведения,
испытал этот способ, действительно хорошо уменьшает шум,
хотя появляются контуры и пятна и все равно размывает.
Может что не так понял:

var x,y,d,q,xx,yy,z,n,i,j,w,h:integer; m:array[1..81] of byte;
begin
d:=1{2,3,4}; q:=d*2+1; q:=q*q-1; q:=q div 2;
for y:=d+1 to h-d do for x:=d+1 to w-d do begin
 n:=0;
 for yy:=y-d to y+d do for xx:=x-d to x+d do
 if (yy<>y)or(xx<>x) then begin
// сортировка вставкой
   z:=bw[yy,xx]; //вход
   i:=1; while (i<=n)and(z>m[i]) do inc(i);
   for j:=n downTo i do m[j+1]:=m[j];
   m[i]:=z;
   inc(n);
 end;
 br[y,x]:=m[q];  //результат
end;
end;

Можно делать только для яркости или
для 3-х цветов, для яркости и 2-ух разностных цветов,
с размером d=1,2,3..., один раз или несколько,
однако и размытие и этот способ
годятся для плотных и мелких шумов
иначе от них больше вреда.
Наверно для редких и крупных шумов нужно
выделять параметры шума, пользуясь тем что
он по всей картинке, распознавать и вычитать,
похоже так действует neatImage.
Может кто знает где есть на эту тему?


 
Sapersky   (2004-12-06 13:15) [5]

http://www.cee.hw.ac.uk/hipr/html/filtops.html



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.051 c
14-1110304737
Palladin
2005-03-08 20:58
2005.03.27
Logitech Cordless Desktop MX for Bluetooth


10-1012843591
michelson
2002-02-04 20:26
2005.03.27
JBoss Documentation


3-1109786582
Arazel
2005-03-02 21:03
2005.03.27
Могу ли Я их использовать в компонентах Query для создание mdf


3-1109252059
Alex--
2005-02-24 16:34
2005.03.27
Ошибка при загрузке файла в TClientDataSet


14-1110030629
Cosinus
2005-03-05 16:50
2005.03.27
Я возмущен!!! Посмотрите, пожалуста, может я неправ?




   Наверх