Ваша задача разработать реализации интерфейсов ImageConverter и ConvolutionProvider и
создать их в методах impl.image.ImageConverterFactory.getInstance и impl.image.ConvolutionProviderFactory.getInstance соответственно.
ImageConverter должен уметь превращать Color[][] в int[][] и обратно, где int будет хранить в себе данные о цвете в таком виде:
- 0-7 биты хранят информацию о голубом цвете (
blue), - 8-15 биты хранят информацию о зеленом цвете (
green), - 16-23 биты хранят информацию о красном цвете (
red), - 24-31 биты хранят информацию о прозрачности (
alpha).
ConvolutionProvider должен уметь применять операцию свертки
к данной картинке, используя ядро (гарантируется, что размерности ядра > 0).
- Применять операцию свертки следует к каждому цвету отдельно.
- Размер изображения меняться не должен.
- Если при применении свертки, элемент ядра выходит за пределы картинки, следует считать, что
red, green, blue = 0. alphaвсегда оставлять равной255.- После каждого умножения значения цвета на элемент ядра следует производить округление к
0.
В пакете impl.image представлен класс ImageUtil его методы writeOutputImage, readOriginImage можно использовать, чтобы
записывать картинки в папку resources/image/output и читать картинки из папки resources/image/origin.
С их помощью можно смотреть, как операция свертки влияет на изображения.
- Все картинки должны быть в формате
png. - При указании имени картинки, формат также должен указываться (например
pic1.png).