База знаний

Номер статьи: 1131 | Категория: Обработка изображения | Тип: Полезные советы | Последнее обновление: 11.09.2015

Мусор на изображении

Описание

Как очистить изображение от мусора?

Решение

A. Используйте метод RemoveGarbage объекта ImageDocument.

или

B. Используйте метод AddRemoveGarbageRegion объекта ImageModification и метод Modify объекта ImageDocument.

Ниже пример на C#, показывающий, как это можно сделать. Подробной описание используемых методов доступно в нашей справке.

// Discard image in order to get correct results after garbage removing
CSafePtr<IPrepareImageMode> prepareImageMode;
FREngine->CreatePrepareImageMode(&prepareImageMode);
prepareImageMode->put_DiscardColorImage(TRUE);

// Open image
CSafePtr <IImageDocument> imageDoc;
FREngine->PrepareAndOpenImage(imageFilePath, prepareImageMode, 0, documentInfo, &imageDoc);

// Create and implement image modification
CSafePtr<IImageModification> imageModification;
FREngine->CreateImageModification(&imageModification);

// The region of modification is equal to whole page
CSafePtr<IRegion> region;
FREngine->CreateRegion(&region);
CSafePtr<IImage> image;
imageDoc->get_BlackWhiteImage(&image);
long width, height;
image->get_Width(&width);
image->get_Height(&height);
region->AddRect(0, 0, width, height);

// Remove black dots on the white background with the garbaze size=100 pixels. The garbage size is a number of pixels in a group of connected pixels. For example, small text objects like dots are about 30x30 pixels (garbaze size=600 pixels), so the garbage, removing should not affect any meaningful data, but cleans the image.
imageModification->AddRemoveGarbageRegion(region, 0, 100);

// Modify the ImageDocument object
imageDoc->Modify(imageModification);

// Put the modified image into IImage object and create FRDocument
imageDoc->get_BlackWhiteImage(&image);
CSafePtr<IFRDocument> frDocument;
FREngine->CreateFRDocument(&frDocument);
frDocument->AddImage(imageDoc);

// Set the parameter to remove garbage
CSafePtr<IPageProcessingParams> pageProcessingParams;
FREngine->CreatePageProcessingParams(&pageProcessingParams);
CSafePtr<IObjectsExtractionParams> objectsExtractionParams;
pageProcessingParams->get_ObjectsExtractionParams(&objectsExtractionParams);
objectsExtractionParams->put_RemoveGarbage(TRUE);

// Process
frDocument->Process(pageProcessingParams, synthesisParamsForPage, synthesisParamsForDocument);

369 считают это полезным.
Была ли эта информация вам полезна?