procedure Thin; virtual;
procedure TMorphologicalFiltersTest.Grayscale_Dilate; var bm: TBitmap; grayMap: IImageAdapter; filter: FilterDilate; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_test.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; filter := FilterDilate.Create(); grayMap.Apply(filter); filter.Free; bm := grayMap.ToImage; bm.SaveToFile('..Imagesresult_test_grayscale_dilate.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Grayscale_Erode; var bm: TBitmap; grayMap: BitmapGray;
filter: FilterErode; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_test.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; filter := FilterErode.Create(); grayMap.Apply(filter); filter.Free; bm := grayMap.ToImage; bm.SaveToFile('..Imagesresult_test_grayscale_erode.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Binary_Erode; var bm: TBitmap; grayMap: BitmapGray; bw: BitmapBW; thresholder: Thresholder_Global_MaximumEntropy; filter: FilterErode; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_Test.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; thresholder := Thresholder_Global_MaximumEntropy.Create(grayMap); bw := thresholder.GetBlackAndWhiteBitmap; thresholder.Free; filter := FilterErode.Create(); bw.Apply(filter); filter.Free; bm := bw.ToImage; bw.Free; bm.SaveToFile('..Imagesresult_Test_binary_Erode.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Binary_Dilate; var bm: TBitmap; grayMap: BitmapGray; bw: BitmapBW; thresholder: Thresholder_Global_MaximumEntropy; filter: FilterDilate; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_Test.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; thresholder := Thresholder_Global_MaximumEntropy.Create(grayMap); bw := thresholder.GetBlackAndWhiteBitmap; thresholder.Free; filter := FilterDilate.Create(); bw.Apply(filter); filter.Free; bm := bw.ToImage; bw.Free; bm.SaveToFile('..Imagesresult_Test_binary_dilate.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Binary_HitAndMiss; var bm: TBitmap; grayMap: BitmapGray; bw: BitmapBW; thresholder: Thresholder_Global_MaximumEntropy; filter: FilterHitAndMiss; dt: TDateTime; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_Test.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; thresholder := Thresholder_Global_MaximumEntropy.Create(grayMap); bw := thresholder.GetBlackAndWhiteBitmap; thresholder.Free; filter := FilterHitAndMiss.Create(bw); dt := Now; bw.Apply(filter); dt := Now - dt; Status('It took ' + FormatDateTime('HH:NN:SS.ZZZ', dt) + ' to apply hit and miss filter.'); filter.Free; bm := bw.ToImage; bw.Free; bm.SaveToFile('..Imagesresult_Test_binary_hitandmiss.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Binary_Thin; var bm: TBitmap; grayMap: BitmapGray; bw: BitmapBW; thresholder: Thresholder_Global_MaximumEntropy; filter: FilterThin; dt: TDateTime; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_skew.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; thresholder := Thresholder_Global_MaximumEntropy.Create(grayMap); // thresholder.DetectedThreshold:=127; bw := thresholder.GetBlackAndWhiteBitmap; thresholder.Free; filter := FilterThin.Create(bw); dt := Now; bw.Apply(filter); dt := Now - dt; Status('It took ' + FormatDateTime('HH:NN:SS.ZZZ', dt) + ' to apply thin filter.'); filter.Free; bm := bw.ToImage; bw.Free; bm.SaveToFile('..Imagesresult_skew_binary_thin.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Binary_Smooth; var bm: TBitmap; grayMap: BitmapGray; bw: BitmapBW; thresholder: Thresholder_Global_MaximumEntropy; filter: FilterSmooth; dt: TDateTime; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_skew.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; thresholder := Thresholder_Global_MaximumEntropy.Create(grayMap); bw := thresholder.GetBlackAndWhiteBitmap; thresholder.Free; filter := FilterSmooth.Create(bw); dt := Now; bw.Apply(filter); dt := Now - dt; Status('It took ' + FormatDateTime('HH:NN:SS.ZZZ', dt) + ' to apply smooth filter.'); filter.Free; bm := bw.ToImage; bw.Free; bm.SaveToFile('..Imagesresult_skew_binary_smooth.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Grayscale_Denoise; var bm: TBitmap; grayMap: BitmapGray; filter: FilterDenoise; dt: TDateTime;
begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_test.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; filter := FilterDenoise.Create(); dt := Now; grayMap.Apply(filter); dt := Now - dt; Status('It took ' + FormatDateTime('HH:NN:SS.ZZZ', dt) + ' to apply denoise filter.'); filter.Free; bm := grayMap.ToImage; bm.SaveToFile('..Imagesresult_test_grayscale_denoise.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Binary_Denoise; var bm: TBitmap; grayMap: BitmapGray; bw: BitmapBW; thresholder: Thresholder_Global_MaximumEntropy; filter: FilterDenoise; dt: TDateTime; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_Test.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; thresholder := Thresholder_Global_MaximumEntropy.Create(grayMap); bw := thresholder.GetBlackAndWhiteBitmap; thresholder.Free; filter := FilterDenoise.Create(); dt := Now; bw.Apply(filter); dt := Now - dt; Status('It took ' + FormatDateTime('HH:NN:SS.ZZZ', dt) + ' to apply binary denoise filter.'); filter.Free; bm := bw.ToImage; bw.Free; bm.SaveToFile('..Imagesresult_Test_binary_Denoise.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Binary_Thin_GuoHall; var bm: TBitmap; grayMap: BitmapGray; bw: BitmapBW; thresholder: Thresholder_Global_Simple; filter: FilterThinGuoHall; dt: TDateTime; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_skew.bmp'); grayMap := BitmapGray.Create(bm); bm.Free; thresholder := Thresholder_Global_Simple.Create(grayMap); thresholder.DetectedThreshold:=127; bw := thresholder.GetBlackAndWhiteBitmap; thresholder.Free; filter := FilterThinGuoHall.Create(); dt := Now; filter.Apply(bw); dt := Now - dt; Status('It took ' + FormatDateTime('HH:NN:SS.ZZZ', dt) + ' to apply thin filter.'); filter.Free; bm := bw.ToImage; bw.Free; bm.SaveToFile('..Imagesresult_skew_binary_thin_GuoHall.bmp'); bm.Free; end;
procedure TMorphologicalFiltersTest.Binary_Thin1; var bm: TBitmap; grayMap: BitmapGray; bw: BitmapBW; thresholder: Thresholder_Global_MaximumEntropy; filter: FilterThin1; dt: TDateTime; begin bm := TBitmap.Create; bm.LoadFromFile('..Imagesinput_skew.bmp'); grayMap := BitmapGray.Create(bm); grayMap.SaveImageToFile('..Imagesresult_thinned1_gray.bmp'); bm.Free; thresholder := Thresholder_Global_MaximumEntropy.Create(grayMap); // thresholder.DetectedThreshold:=127; bw := thresholder.GetBlackAndWhiteBitmap; bw.SaveImageToFile('..Imagesresult_thinned1_bw.bmp'); thresholder.Free; filter := FilterThin1.Create(); dt := Now; bw.Apply(filter); dt := Now - dt; Status('It took ' + FormatDateTime('HH:NN:SS.ZZZ', dt) + ' to apply thin filter.'); filter.Free; bm := bw.ToImage; bw.Free; bm.SaveToFile('..Imagesresult_thinned1.bmp'); bm.Free; end;