Пишу программу анализа растровых изображений. Пока умеет определять размер неоднородностей.
Пытался все делать в рамках концепции документ-представление:
CDoc содержит картинку (Bitmap), алгоритм обработки и результат обработки (valarray).
CImageView выводит картинку на экран. Позволяет выделить фрагмент изображения.
CGraphView выводит результат в виде графика и позволяет выделить на нем участок для более подробного анализа.
Это нормальный подход для такой задачи?
Может быть есть другие варианты?
Как лучше организовать интерфейс? Из подобных программ знаю только ImagePro plus — мне не очень нравится их модель работы с изображением. Там все построено на диалогах — примерно как фильтры в фотошопе. Мне кажется результат обработки должен быть в отдельном виде...
Заранее благодарен за любую информацию!
Дополнение:
в форуме наткнулся:
В примитивном изложении в твоем случае рекомендуеися в документах хранить
строго данные и методы доступа к ним. Во Views делать только отображение.
Все операции над данными вынести в отдельное дерево классов (Command Pattern).
Рекомендованную там литературу ("More C++ Gems") пока не нашел. Посоветуйте, что еще можно почитать?
Спасибо.
Здравствуйте, Iterator!
Тоже каогда-то писал что-то для обработки изображений.
Document/View здесь действительно слабо подходит (хотя никто не запрещает, всё это можно...)
Я в результате (по нехватке времени) сделал один документ (изображение, результаты и, вообщем-то, обработка) и его сложное представление. Это работало не плохо, но было сложно дальше развивать.
По поводу исспользования паттерна Command идея, на мой взгляд, хорошая, и, как всегда в паттернах, проверенное годами...
Можешь поискать книгу про
паттерныАвтор(ы): Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес
В предлагаемой книге описываются простые и изящные решения типичных задач,
возникающих в объектно-ориентированном проектировании. Паттерны появились
потому, что многие разработчики искали пути повышения гибкости и степени
повторного использования своих программ. Найденные решения воплощены в краткой и
легко применимой на практике форме. Авторы излагают принципы использования
паттернов проектирования и приводят их каталог. Таким образом, книга
одновременно решает две задачи. Во-первых, здесь демонстрируется роль паттернов
в создании архитектуры сложных систем. Во-вторых, применяя содержащиеся в
справочнике паттерны, проектировщик сможет с легкостью разрабатывать собственные
приложения. Издание предназначено как для профессиональных разработчиков, так и
для программистов осваивающих объектно-ориентированное проектирование.
. Там же, кстати, очень классно описанно, как красиво реализовать Undo.
Здравствуйте, Iterator, Вы писали:
I>Пишу программу анализа растровых изображений. Пока умеет определять размер неоднородностей.
I>Пытался все делать в рамках концепции документ-представление:
I>CDoc содержит картинку (Bitmap), алгоритм обработки и результат обработки (valarray).
I>CImageView выводит картинку на экран. Позволяет выделить фрагмент изображения.
I>CGraphView выводит результат в виде графика и позволяет выделить на нем участок для более подробного анализа.
I>Это нормальный подход для такой задачи?
I>Может быть есть другие варианты?
Имхо, документ-представление тут не очень подходит. У себя (менедэжер картинок + поиск похохожих изображений + до хрена чего еще) я использую приблизительно следиущую архитектуру
clImageSource — загрузка и сохранение (куча потомков для разных форматов)
clImageAnalizer — обработка, соответственно тоже куча потомков для разных фильтров, анализаторов и т.д.
СImageViewer — Вывод изображения на экран.
Первые два класса чисто виртуальные, фактически это просто интерфейсы, поэтому очень просто добавить что-нить новенькое
I>Как лучше организовать интерфейс? Из подобных программ знаю только ImagePro plus — мне не очень нравится их модель работы с изображением. Там все построено на диалогах — примерно как фильтры в фотошопе. Мне кажется результат обработки должен быть в отдельном виде...
Ну. мне например очень удобно работать, когда результат показывается под изображением, на специальной панельке

, но это, по-моему, очень субъективно.
I>Заранее благодарен за любую информацию!