OpenImaj: EigenImages, размер входных изображений не может быть разницей?

VFSGroupDataset<FImage> dataset = new VFSGroupDataset<FImage>(
                "zip:file:/Users/nhnguyen/Data/newArchive.zip",
                ImageUtilities.FIMAGE_READER);

        int nTraining = 50;
        int nTesting = 5;
        GroupedRandomSplitter<String, FImage> splits = 
            new GroupedRandomSplitter<String, FImage>(dataset, nTraining, 0, nTesting);
        GroupedDataset<String, ListDataset<FImage>, FImage> training = splits.getTrainingDataset();
        GroupedDataset<String, ListDataset<FImage>, FImage> testing = splits.getTestDataset();

        List<FImage> basisImages = DatasetAdaptors.asList(training);
        int nEigenvectors = 100;
        EigenImages eigen = new EigenImages(nEigenvectors);
        eigen.train(basisImages);

У меня есть приведенный выше код для тестирования учебника EigenImages с моим собственным набором данных. Я застрял в том, что он выдаст исключение с матрицей, если в моем наборе данных будут изображения разных размеров, скажем, 92x112 и 100x100 и т. Д. Когда я делаю пакетное изменение размера до того же размера, оно работает, однако Это немного искажает изображение, которое, как я беспокоюсь, повлияет на точность. Есть ли возможность обучить собственное распознавание воспринимать входные данные в различных измерениях?

1 ответ

Нет, подход Eigenfaces по своей природе требует, чтобы все изображения были одинакового размера и также были, по крайней мере, приблизительно выровнены (то есть, с одинаковой ориентацией, глаза примерно в одном и том же месте).

Однако вы можете автоматизировать масштабирование и выравнивание, используя одну из реализаций OpenIMAJ FaceAligner.

Другие вопросы по тегам