BOOL fipImage::threshold(BYTE T) { if(_dib) { FIBITMAP *dib1 = FreeImage_Threshold(_dib, T); return replace(dib1); } return FALSE; }
//--------------------------------------------------------------------------- FIBITMAP* BitrateConversion(FIBITMAP* image, TYPE bit_per_pixel) { ConvertType convertTab[] = { FreeImage_ConvertTo4Bits, FreeImage_ConvertTo8Bits, FreeImage_ConvertTo16Bits555, FreeImage_ConvertTo24Bits, FreeImage_ConvertTo32Bits }; switch (bit_per_pixel) { case bit_1: return FreeImage_Threshold(image,128); case bit_4: return convertTab[0](image); case bit_8: return convertTab[1](image); case bit_16: return convertTab[2](image); case bit_24: return convertTab[3](image); case bit_32: return convertTab[4](image); } return 0; }
static void TestFIA_ErosionTest(CuTest* tc) { const char *file = TEST_DATA_DIR "\\morpholology_test.bmp"; FIBITMAP *dib1 = FIA_LoadFIBFromFile(file); CuAssertTrue(tc, dib1 != NULL); FIBITMAP *threshold_dib = FreeImage_Threshold(dib1, 20); CuAssertTrue(tc, threshold_dib != NULL); FIBITMAP *threshold_8bit_dib = FreeImage_ConvertTo8Bits(threshold_dib); CuAssertTrue(tc, threshold_8bit_dib != NULL); FIABITMAP *border_dib = FIA_SetBorder(threshold_8bit_dib, 2, 2 , BorderType_Constant, 0.0); PROFILE_START("ErosionFilter"); FilterKernel kernel = FIA_NewKernel(2, 2, kernel_values, 1.0); FIBITMAP* result_dib = FIA_BinaryErosion(border_dib, kernel); CuAssertTrue(tc, result_dib != NULL); PROFILE_STOP("ErosionFilter"); FIA_SaveFIBToFile(result_dib, TEST_DATA_OUTPUT_DIR "\\erosion_result.jpg", BIT24); result_dib = FIA_BinaryInnerBorder(threshold_8bit_dib); FIA_SimpleSaveFIBToFile(result_dib, TEST_DATA_OUTPUT_DIR "morphology/inner_border_result.bmp"); FreeImage_Unload(dib1); FreeImage_Unload(threshold_dib); FreeImage_Unload(threshold_8bit_dib); FIA_Unload(border_dib); FreeImage_Unload(result_dib); }
static void TestFIA_ClosingTest(CuTest* tc) { const char *file = TEST_DATA_DIR "\\morpholology_test.bmp"; FIBITMAP *dib1 = FIA_LoadFIBFromFile(file); CuAssertTrue(tc, dib1 != NULL); FIBITMAP *threshold_dib = FreeImage_Threshold(dib1, 20); CuAssertTrue(tc, threshold_dib != NULL); FIBITMAP *threshold_8bit_dib = FreeImage_ConvertTo8Bits(threshold_dib); CuAssertTrue(tc, threshold_8bit_dib != NULL); FIABITMAP *border_dib = FIA_SetBorder(threshold_8bit_dib, 2, 2 , BorderType_Constant, 0.0); FilterKernel kernel = FIA_NewKernel(2, 2, kernel_values, 1.0); FIBITMAP* result_dib = FIA_BinaryClosing(border_dib, kernel); CuAssertTrue(tc, result_dib != NULL); FIA_SaveFIBToFile(result_dib, TEST_DATA_OUTPUT_DIR "\\closing_result.jpg", BIT24); // Test of convinience 3x3 function result_dib = FIA_Binary3x3Closing(threshold_8bit_dib); FIA_SimpleSaveFIBToFile(result_dib, TEST_DATA_OUTPUT_DIR "morphology/closing3x3_result.bmp"); FreeImage_Unload(dib1); FreeImage_Unload(threshold_dib); FreeImage_Unload(threshold_8bit_dib); FIA_Unload(border_dib); FreeImage_Unload(result_dib); }