| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > сглаживающий фильтр |
| Автор: koder 29.1.2006, 10:41 | ||
Как реализовать это?
|
| Автор: maxim1000 29.1.2006, 14:34 |
| на каком языке? |
| Автор: koder 29.1.2006, 14:57 |
| Желательно на Pascal! |
| Автор: cardinal 29.1.2006, 15:27 |
| Сначала я бы увеличил размер массива на (tsize+2)*(tsize+2), чтобы дальше проще было. А что проще ты поймешь когда нарисуешь квадрат размера 10x10 например (на клетчатой бумажке), выберешь любую точку и закрасишь каким-нибудь цветом восемь квадратиков вокруг выбранного. Их значения тебе и надо суммировать. Если (x,y) это координата выбранной точки, то (x-1,y) это точка слева, (x-1,y-1) слева сверху и т.д. Получишь в суммировании восемь строк кода и потом в цикле все этой сделаешь и будет тебе результат... Если что непонятно напишу поподробней, а если и так понятно, то дальше писать лень... |
| Автор: koder 29.1.2006, 16:01 |
| А я бы ни чего бы не увеличивал! И крутил бы массив не увеличивая размер) |
| Автор: cardinal 29.1.2006, 17:20 |
| Тогда, когда ты будешь на левом краю (например), ты должен будешь это проверять и не прибавлять значения (x-1, y-1),(x-1, y) и (x-1, y+1), а так этих проверок не будет... К тому же в углах не будет лишнего геморра. |
| Автор: SoWa 29.1.2006, 18:41 |
| И еще надо создать второй массив. Чтобы каши не было. Т.е. в исходном считаешь, а в новый пишешь. |
| Автор: cardinal 29.1.2006, 19:59 | ||
Да, это тоже выход из положения. Причем не очень даже плохой, т.к. создавать второй массив большего размера (для исходнодного) в таком случае не надо. А второй массив для результата это конечно нужно. |
| Автор: koder 29.1.2006, 21:09 | ||
Может такой вариант подойдет? |
| Автор: cardinal 29.1.2006, 21:58 |
| Я не понял, ты задавал вопрос или я? Тебе подойдет или кому? А во-вторых то ли мне глючит, то ли ты не обнуляешь ни count, не sum при перепрыгивании на след. точку... А цикл сделан хреново (см. выше)... |
| Автор: koder 29.1.2006, 22:50 |
| count и sum обнуляется, как только попадаем в процедуру..)) их надо обнулять только в начале процедуры! А так рабочий алгоритм? Есть варианты оптимизации? |
| Автор: cardinal 29.1.2006, 23:34 | ||
| Понял, извини, не заметил, что ты поточечно обрабатываешь матрицу. Если надобности в этом нет, то это очень плохая реализация, т.к. сложно сделать что-то медленней чем такое вот поточечное обрабатывание. Ну так вручную сделай то, что нужно с какой-нибудь матрицей типа 3x4, а потом сделай обработку с помощью твоей проги и сравни... Если бы ты внимательней читал предыдущие посты, то ты бы уже знал, что есть. От этого сравнения
можно полностью избавиться! |
| Автор: koder 30.1.2006, 00:00 |
| Напиши свой вариант) |
| Автор: cardinal 30.1.2006, 01:40 | ||
| Это тебе надо или мне? Ты давно читал подпись админа? Вот она:
|
| Автор: Snowy 30.1.2006, 10:23 |
| Для домашних заданий, курсовых, существует "Центр Помощи" |
| Автор: koder 1.2.2006, 12:21 | ||
А по подробнее можно? |
| Автор: cardinal 1.2.2006, 12:40 |
| Ты не можешь обрабатывать краевые также как и центральные точки. Для этого мы превращаем краевые в центральные. Таким образом у каждой точки (краевые нас теперъ не интересуют) есть 8 соседних. Что еще подробней расписывать не знаю... Поконкретней спрашивай, если что. |