|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.12.2014, 13:45 | #1 |
Новичок
Джуниор
Регистрация: 13.12.2013
Сообщений: 2
|
Фильтр Гаусса,обработка изображения с помощью процессов и потоков
Доброго времени суток, уважаемые программисты! Есть проблемка...дано изображение, которое будет обрабатываться фильтром Гаусса, код обработки есть,все прекрасно работает, НО, препод для проверки дает картинку 20000x20000 пикселей, и естественно моим проходом это будет обрабатываться очень долго...и он сказал,что если поделить картинку на несколько частей и обработать с помощью процессов и потоков, то все должно пройти немного быстрее...в связи с этим,прошу помощи у тех,кто сталкивался с подобной проблемой или может помочь с изменением кода... Код программы выкладываю для проверки работоспособности и внесения возможных поправок. Реализация программы в QT Creator 5.
|
19.12.2014, 16:31 | #2 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
1. Ты выложил не весь код, т.к. часть кода ты генерировал автоматически через Qt designer. Проект не собирается.
2. Твой код настолько жесток, что править его никто не будет. Проще удалить его и написать новый. По проблеме: 1) у тебя должна быть функция, которая на вход принимает картинку и возвращает обработанную фильтром. Это ведь так логично, не правда ли? 2) неужели ты не можешь нарезать картинку на части, передать части в функцию фильтра и слепить назад результаты? - это же очень просто. 3) ты нарезал картинку на более мелкие и сложил их в массив. Распараллелить обработку очень просто, ты можешь использовать для этого как QThread, так и QtConcurrent (я бы взял последний вариант - проблема решается в одну строчку). Соответственно, твоя проблема возникла из за того, что ты написал хреновый код - у тебя нет функции которая применяет фильтр Гаусса к изображению, ты все слепил в один "божественный объект". Ну а хреново организованный код распараллелить не выйдет. Вобщем все надо переписывать с начала . |
19.12.2014, 17:02 | #3 | |
Новичок
Джуниор
Регистрация: 13.12.2013
Сообщений: 2
|
Цитата:
В моем коде я загружаю картинку, копирую ее во временный массив, обрабатываю функцией gauss_filter,и потом сохраняю) запуск производится с консоли с передачей параметров размера ядра и коэффициентом размытия) Последний раз редактировалось kurosaki_kun; 19.12.2014 в 17:04. |
|
19.12.2014, 18:08 | #4 | |||||
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Соответственно если ты решишь использовать свой код для параллельной обработки нескольких картинок -тебе надо будет создать несколько mainwindow (по одному для каждой части картинки). Т.е. твой код фильтр гауса нифига не пригоден для повторного использования, не получится просто так взять и распараллелить его. Тебе надо либо внимательно прочитать предыдущий ответ, либо ты можешь говнокодить дальше и, например, уже внутри функции фильтрации заниматься созданием потоков и разделением картинок. Но это путь вникуда Цитата:
Цитата:
Нужен пример - держи: Код:
Цитата:
Я выше написал более чем подробно как это можно делать. Наверняка можно сделать и иначе - например в том варианте, что предложил я - создаются копии для каждой части картинки, а это может быть тоже долго. Как Более оптимальный вариант - не создавать копии, а указывать каждой функции фильтрации область картинки, которую надо обработать. Но в этом случае вам не надо нарезать картинку, а вы спрашиваете про это. Вообще, насколько ты думаешь поднимется скорость работы программы после распараллеливания? Цитата:
|
|||||
19.12.2014, 18:13 | #5 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Кстати, вот тут описан параллельный фильтр Гаусса: http://habrahabr.ru/company/epam_systems/blog/245523/
Я не вникал в статью, но они там явно решили все проблемы. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Список запущенных процессов и потоков | REztor | C# (си шарп) | 0 | 08.09.2014 14:20 |
Монитор процессов, потоков и окон р е ш и т е | NightWish | Помощь студентам | 3 | 17.03.2011 12:18 |
О приоритетах потоков и процессов | Altera | Свободное общение | 9 | 01.05.2010 10:41 |
Обработка изображения (инверсный фильтр) | Dreablin | C++ Builder | 5 | 06.12.2009 22:28 |
монитор процессов и потоков на делфи | Танка | Помощь студентам | 1 | 29.05.2009 16:41 |