Простая яркость, но медленная - PullRequest
0 голосов
/ 29 марта 2011

У меня есть картинка, и я получаю каждый пиксель и умножаю RGB на число.Мне также нужно позаботиться, когда R * число> 255. Когда это произойдет, r = 255. Для завершения изображения 1024x768 требуется около 10 с +.Обычное программное обеспечение, которое делает яркость, занимает менее 1 с, чтобы сделать это.Есть идеи по улучшению моей стратегии?Спасибо.

Ответы [ 4 ]

3 голосов
/ 29 марта 2011

У меня была похожая проблема:

Как использовать ColorMatrix в .NET для изменения яркости, цвета, насыщенности, оттенка

Только для яркости colormatrix будет работать нормально. Если вы хотите начать использовать контраст и т. Д., Вам нужно будет использовать другое решение. Кажется, SetPixel - самая медленная часть. Посмотрите это решение, чтобы сделать это быстро:

http://www.codeproject.com/KB/GDI-plus/csharpgraphicfilters11.aspx

2 голосов
/ 29 марта 2011

Использование ColorMatrix , вероятно, будет лучшим способом.Вот статья, которая поможет вам в этом: http://www.c -sharpcorner.com / UploadFile / mahesh / Transformations0512192005050129AM / Transformations05.aspx

1 голос
/ 29 марта 2011

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

Это может привести вас в правильном направлении http://wcode.net/2009/08/unsafe-in-c-and-image-processing/

0 голосов
/ 29 марта 2011

ну этот сайт мне очень помог: http://blogs.msdn.com/b/llobo/archive/2007/03/08/bitmapsource-bitmap-interop.aspx

...