| ||
: О проекте :: Устройство робота :: Фото и видео :: Демострационный софт :: О авторе : | ||
Фильтрация изображенияФильтрация производится окном, размером 3x3 пикселя. Фильтр находит среднее значение всех 9 точек, и результат записывается в центральную точку окна. Окно пробегается по всему изображению. Затем процесс фильтрации повторяется ровно столько раз, каков порядок данного фильтра. Рекомендуется использовать фильтр 3-4-его порядка. Процесс фильтрации можно ускорить примерно в два раза, если находить среднее значение не 9, а 8 точек окна, исключив одну из угловых точек. В этом случае деление суммы яркостей нужно будет производить не на 9, а на 8, что можно заменить операцией правого сдвига на 3, которая на процессорах intel80x86 выполняется в ~8 раз быстрее. ... interface const ImageWidth = 384; // ширина изображения. Если умножить на 3 должно быть кратным 4 ImageHeight = 284; // высота изображения type // тип данных для черно-белого изображения TBWImage = array[0..ImageHeight-1,0..ImageWidth-1] of Byte; ... type TForm1 = class(TForm) Panel1 : TPanel; PaintBox1 : TPaintBox; Timer1 : TTimer; ... public BWImage : TBWImage; end; ... implementation ... { процедура фильтрует указанное изображение } procedure FilterBWImage(var Image : TBWImage); assembler; asm PUSH EDI MOV EDI,EAX ADD EDI,1+ImageWidth MOV ECX,ImageHeight-2 @@1: PUSH ECX PUSH EDI MOV ECX,ImageWidth-2 @@2: XOR EAX,EAX MOV AL,[EDI-ImageWidth-1] ADD AL,[EDI-ImageWidth] ADC AH,0 ADD AL,[EDI-ImageWidth+1] ADC AH,0 ADD AL,[EDI-1] ADC AH,0 ADD AL,[EDI] ADC AH,0 ADD AL,[EDI+1] ADC AH,0 ADD AL,[EDI+ImageWidth-1] ADC AH,0 ADD AL,[EDI+ImageWidth] ADC AH,0 SHR EAX,3 STOSB LOOP @@2 POP EDI POP ECX ADD EDI,ImageWidth LOOP @@1 POP EDI end; procedure TForm1.Timer1Timer(Sender:TObject); begin { Получить черно-белое изображение в BWImage } // Фильтрация изображения 3 раза FilterBWImage(BWImage); FilterBWImage(BWImage); FilterBWImage(BWImage); // Вывести результирующее изображение на PaintBox1. см. Захват видео. DrawBWImage( PaintBox1.Canvas.Handle, BWImage ); ... end; end. | ||
Дизайн: DynSoft |