Мини программа для обработки изображений
Цитата: Kotyarkins от 15.10.2020, 14:18Всем привет!
Я студент и делаю курсач. Но если вы думаете, что я прошу вас сделать курсач за меня - вы ошибаетесь. Итак объясняю по порядку.
Курсач - устройство. Для его реализации мне надо написать алгоритм для обработки изображений. Так как программирую на c# решил сперва алгоритм написать на этом языке, а заодно и разобраться с тем, а как вообще с ними работать.Теперь о самом приложении и в чем мне, собственно, требуется помощь. Приложение принимает изображение и "разбирает" его на пиксели, далее формируется аналог этого изображения из кругов/прямоугольников. То есть каждый пиксель заменяется на некую фигуру.
В данный момент я написал простейшее приложение на wpf, которое берет изображение 512х512, разбирает его через bitmap и выводит в виде uniformgrid заполненного rectangles соответствующего цвета. Вот только работает это полминуты и съедает Гб оперативки.
И список вопросов на эту тему:
1) Можно ли это дело оптимизировать как по памяти, так и по времени?
2) Может ли кто нибудь подсказать, где можно почитать о попиксельной обработке изображений?(не обязательно с#)Если есть какие то вопросы - задавайте, я отвечу. Всем хорошего настроения)
Всем привет!
Я студент и делаю курсач. Но если вы думаете, что я прошу вас сделать курсач за меня - вы ошибаетесь. Итак объясняю по порядку.
Курсач - устройство. Для его реализации мне надо написать алгоритм для обработки изображений. Так как программирую на c# решил сперва алгоритм написать на этом языке, а заодно и разобраться с тем, а как вообще с ними работать.
Теперь о самом приложении и в чем мне, собственно, требуется помощь. Приложение принимает изображение и "разбирает" его на пиксели, далее формируется аналог этого изображения из кругов/прямоугольников. То есть каждый пиксель заменяется на некую фигуру.
В данный момент я написал простейшее приложение на wpf, которое берет изображение 512х512, разбирает его через bitmap и выводит в виде uniformgrid заполненного rectangles соответствующего цвета. Вот только работает это полминуты и съедает Гб оперативки.
И список вопросов на эту тему:
1) Можно ли это дело оптимизировать как по памяти, так и по времени?
2) Может ли кто нибудь подсказать, где можно почитать о попиксельной обработке изображений?(не обязательно с#)
Если есть какие то вопросы - задавайте, я отвечу. Всем хорошего настроения)
Цитата: Roman Anderson [anomal3] от 17.10.2020, 18:39Может смотреть в сторону OpenGL уже или XNA?
И если Вы просите ускорить алгоритм, так покажите его, или Вам достаточно того что я скажу, "Можно оптимизировать память!".
И немного непонятно. Опустим что пиксель квадратный (не углубляясь в субпиксель). На основе изображения делаем не формат изображения, а формат разного цвета фигурок? и если я правильно понял нужно смотреть как я изложил выше.
Может смотреть в сторону OpenGL уже или XNA?
И если Вы просите ускорить алгоритм, так покажите его, или Вам достаточно того что я скажу, "Можно оптимизировать память!".
И немного непонятно. Опустим что пиксель квадратный (не углубляясь в субпиксель). На основе изображения делаем не формат изображения, а формат разного цвета фигурок? и если я правильно понял нужно смотреть как я изложил выше.
Цитата: Kotyarkins от 19.10.2020, 23:44Цитата: Roman Anderson [anomal3] от 17.10.2020, 18:39И если Вы просите ускорить алгоритм, так покажите его, или Вам достаточно того что я скажу, "Можно оптимизировать память!".
На самом деле - да. Я просто в каждом цикле создавал новый битмап, потому он столько и жрал. Только я после этого психанул и стер алгоритм нахрен.
Дальше, прошу прощения, неверно сформулировал сам вопрос. Суть в том, что мне этот проект необходим только для ознакомления с незнакомой вещью, на основе хоть немного, но знакомой. Все это счастье мне нужно для того, чтобы понять алгоритм работы с этим и переложить его на verilog. А в итоге мне нужен алгоритм обработки изображений в схемотехническом виде. То есть сторонние библиотеки помогут только если они с открытым исходным кодом, да еще понятно, а как там все работает.
И мне нужен алгоритм работы а не готовое решение. Не обязательна работа через битмапы или какое то еще представление в виде изображения. Если есть возможность извлечь информацию и обработать ее самым оптимальным образом. Если это окажется работа в побитовом представлении - я буду использовать ее.Если я написал так, что ни хрена не понятно, а что надо (пардоньте, бывает), то вот вкратце:
Нужна не оптимизация алгоритма, а объяснение каким образом можно работать с изображениями попиксельно, ставя в приоритет скорость работы и без подключения библиотек. Либо ссылка на источники, которые освещают эту тему.
Цитата: Roman Anderson [anomal3] от 17.10.2020, 18:39И если Вы просите ускорить алгоритм, так покажите его, или Вам достаточно того что я скажу, "Можно оптимизировать память!".
На самом деле - да. Я просто в каждом цикле создавал новый битмап, потому он столько и жрал. Только я после этого психанул и стер алгоритм нахрен.
Дальше, прошу прощения, неверно сформулировал сам вопрос. Суть в том, что мне этот проект необходим только для ознакомления с незнакомой вещью, на основе хоть немного, но знакомой. Все это счастье мне нужно для того, чтобы понять алгоритм работы с этим и переложить его на verilog. А в итоге мне нужен алгоритм обработки изображений в схемотехническом виде. То есть сторонние библиотеки помогут только если они с открытым исходным кодом, да еще понятно, а как там все работает.
И мне нужен алгоритм работы а не готовое решение. Не обязательна работа через битмапы или какое то еще представление в виде изображения. Если есть возможность извлечь информацию и обработать ее самым оптимальным образом. Если это окажется работа в побитовом представлении - я буду использовать ее.
Если я написал так, что ни хрена не понятно, а что надо (пардоньте, бывает), то вот вкратце:
Нужна не оптимизация алгоритма, а объяснение каким образом можно работать с изображениями попиксельно, ставя в приоритет скорость работы и без подключения библиотек. Либо ссылка на источники, которые освещают эту тему.