HashMap
не является потокобезопасным, поэтому не используйте параллельные потоки с ним.
Кроме того, зачем это делать, когда потоки могут сделать это для вас?
DbDetails.parallelStream().collect(Collectors.groupingBy(Detail::getId))
В документации OpenCV мы видим, что:
imread: загружает изображение из файла.
imdecode: считывает изображение из буфера в памяти.
Кажется лучшим способом сделать то, что вы хотите.