From ac20a5977e0cea6970ee3a8f1fcc147cbb835268 Mon Sep 17 00:00:00 2001 From: valentina-kustikova Date: Wed, 19 Aug 2015 10:01:23 +0300 Subject: [PATCH 1/4] Updated readme after practice. --- README.md | 60 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 35e3ab8..c6c7814 100644 --- a/README.md +++ b/README.md @@ -51,17 +51,20 @@ __Цель данной работы__ - реализовать набор пр __Основные задачи__: - 1. Разработать программную реализацию сглаживания посредством вычисления - среднего по окрестности. Границы обработать посредством зеркального - отображения пикселей (`gfedcb|abcdefgh|gfedcba`). 1. Реализовать линейный фильтр с произвольным ядром. Граница дополнена - нулевыми значениями. + нулевыми значениями. Ведущий элемент в центре ядра. 1. Разработать реализацию медианного фильтра. При вычислении использовать - только пиксели внутри изображения. - 1. Реализовать горизонтальный фильтр Собеля. Границы обработать посредством - зеркального отображения пикселей (`gfedcb|abcdefgh|gfedcba`). + только пиксели внутри изображения. Размер ядра - нечетная величина, ведущий + элемент ядра находится в центре ядра. __Дополнительные задачи__: + 1. Разработать программную реализацию сглаживания посредством вычисления + среднего по окрестности. Границы обработать посредством зеркального + отображения пикселей (`gfedcb|abcdefgh|gfedcba`). Угловые пиксели + отображаются зеркально вдоль главной и побочной диагоналей. + 1. Реализовать горизонтальный фильтр Собеля. Границы обработать посредством + зеркального отображения пикселей (`gfedcb|abcdefgh|gfedcba`). Угловые + пиксели отображаются зеркально вдоль главной и побочной диагоналей. 1. Расширить реализацию класса матриц следующими операциями и тестами к ним: 1. Транспонирование матрицы. 1. Умножение матриц (в виде перегрузки операции). @@ -419,19 +422,23 @@ __Примечание:__ генератор проекта должен сов 1. Создать рабочую ветку для размещения реализаций фильтров (раздел [Общие инструкции по работе с Git][git-intro]). 1. Создать собственного наследника `FiltersSurname` от абстрактного класса фильтров. - 1. Реализовать последовательно все чисто виртуальные методы базового класса - - методы фильтрации, перечисленные в разделе - [Основные задачи][tasks]. + 1. Реализовать в наследнике последовательно чисто виртуальные методы + базового класса - методы фильтрации, перечисленные в разделе + [Основные задачи][tasks] (линейный и медианный фильтры). 1. При реализации каждого фильтра следует пересобрать проект и проверить - работоспособность тестов. Изменения необходимо постоянно фиксировать, выкладывая - в рабочую ветку на сервер (раздел - [Общие инструкции по работе с Git][git-intro]). + работоспособность тестов. + Рекомендации: + - Отключить тесты для фильтров, которые не реализованы в вашем классе + до настоящего момента (вставьте `DISABLED_` перед названием теста). + - Изменения необходимо постоянно фиксировать, выкладывая + в рабочую ветку на сервер (раздел + [Общие инструкции по работе с Git][git-intro]). 1. Сделать Pull Request в репозиторий upstream. 1. Выбрать и решить одну из задач списка [Дополнительные задачи][tasks]. - Необходимо проконтролировать, чтобы задача не была выбрана другими - участниками школы. В противном случае, в основной репозиторий попадет - первая полностью готовая реализация. + Начиная с третьей задачи, необходимо проконтролировать, чтобы задача + не была выбрана другими участниками школы. В противном случае, + в основной репозиторий попадет первая полностью готовая реализация. ## Детальная инструкция по выполнению работы @@ -466,22 +473,19 @@ __Примечание:__ генератор проекта должен сов 1. Создать собственного наследника `FiltersYourName` от абстрактного класса фильтров. 1. Создать файл `filters_YOUR_NAME.cpp` (файл с реализацией в файловой системе) для собственных реализаций фильтров. - 1. В качестве шаблона необходимо воспользоваться `filters_opencv.cpp`. - Можно скопировать класс без реализации методов из файла - `filters_opencv.cpp` в файл `filters_YOUR_NAME.cpp`, заменив - название класса `FiltersOpenCV` на `FiltersYourName` (ниже приведен + 1. Добавьте в созданный файл класс `FiltersYourName` (ниже приведен фрагмент кода). ``` class FiltersYourName : public Filters { public: - virtual void boxFilter(const Matrix &src, Matrix& dst, const int kSize = 3) - { } virtual void filter2d(const Matrix &src, Matrix& dst, const Matrix &kernel) { } virtual void median(const Matrix &src, Matrix &dst, const int kSize = 3) { } + virtual void boxFilter(const Matrix &src, Matrix& dst, const int kSize = 3) + { } virtual void SobelOx(const Matrix &src, Matrix &dst) { } }; @@ -499,7 +503,7 @@ __Примечание:__ генератор проекта должен сов 1. В функции `Filters* createFilters(FILTERS_IMPLEMENTATIONS impl)` (файл `filters_factory.cpp`) необходимо добавить еще одну ветку у оператора- переключателя `switch`, по которой будет проходить исполнение программы, - если создан объект класса фильтров `YOUR_NAME`. + если создается объект класса фильтров `YOUR_NAME`. 1. В файл `filters_YOUR_NAME.cpp` необходимо поместить реализацию функции создания объекта класса фильтров с вашей реализацией `Filters* createFiltersYourName()`. Указание: для примера можно @@ -508,14 +512,14 @@ __Примечание:__ генератор проекта должен сов ``` Filters* createFiltersYourName() { - Filters* filters = new createFiltersYourName(); + Filters* filters = new FiltersYourName(); return filters; } ``` 1. После выполнения перечисленных действий проект должен успешно компилироваться, но тесты с вашей реализацией фильтров будут падать. - 1. Реализовать последовательно все чисто виртуальные методы базового класса - + 1. Реализовать последовательно чисто виртуальные методы базового класса - методы фильтрации, перечисленные в разделе [Основные задачи][tasks]. Обратите внимание, что у каждого фильтра свой способ обработки краевых пикселей на изображении. @@ -535,9 +539,9 @@ __Примечание:__ генератор проекта должен сов работоспособность тестов на Travis-CI и позволить преподавателям сделать ревью Вашего кода. 1. Выбрать и решить одну из задач списка [Дополнительные задачи][tasks]. - Необходимо проконтролировать, чтобы задача не была выбрана другими - участниками школы. В противном случае, в основной репозиторий попадет - первая полностью готовая реализация. + Начиная с третьей задачи, необходимо проконтролировать, чтобы задача + не была выбрана другими участниками школы. В противном случае, + в основной репозиторий попадет первая полностью готовая реализация. From c1b1cf0baa32eba3392107b16a6c577946b4aac0 Mon Sep 17 00:00:00 2001 From: valentina-kustikova Date: Wed, 19 Aug 2015 10:22:27 +0300 Subject: [PATCH 2/4] Readme cleanings. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2e772d2..5d9c1c5 100644 --- a/README.md +++ b/README.md @@ -44,17 +44,17 @@ __Дополнительные задачи__: 1. Методы инициализации фиксированной константой, инициализация единичной матрицы, инициализация диагональной матрицы с фиксированной константой. 1. Вычисление детерминанта. - 1. Расширить программную реализацию вертикальным фильтром Собеля и + 1. Расширить программную реализацию вертикальным фильтром Собеля и морфологическими операциями эрозии и дилатации. ## Общая последовательность действий 1. Сделать форк upstream-репозитория. - 1. Клонировать origin-репозиторий к себе на локальную машину (раздел + 1. Клонировать origin-репозиторий к себе на локальную машину (раздел [Общие инструкции по работе с Git][git-intro]). 1. Собрать проект и проверить его работоспособность, запустив тесты и пример (раздел [Сборка проекта с помощью CMake и MS VS][cmake-msvs]). - 1. Создать рабочую ветку для размещения реализаций фильтров (раздел + 1. Создать рабочую ветку для размещения реализаций фильтров (раздел [Общие инструкции по работе с Git][git-intro]). 1. Создать собственного наследника `FiltersSurname` от абстрактного класса фильтров. 1. Реализовать в наследнике последовательно чисто виртуальные методы From 86eae8eb7f2b63af88e2c02d5fa0da36024ae091 Mon Sep 17 00:00:00 2001 From: valentina-kustikova Date: Wed, 19 Aug 2015 10:23:18 +0300 Subject: [PATCH 3/4] Readme cleanings. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5d9c1c5..afb76b1 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ __Цель данной работы__ - реализовать набор пр ## Задачи -__Основные задачи__: +__Основные задачи__ 1. Реализовать линейный фильтр с произвольным ядром. Граница дополнена нулевыми значениями. Ведущий элемент в центре ядра. @@ -29,7 +29,7 @@ __Основные задачи__: только пиксели внутри изображения. Размер ядра - нечетная величина, ведущий элемент ядра находится в центре ядра. -__Дополнительные задачи__: +__Дополнительные задачи__ 1. Разработать программную реализацию сглаживания посредством вычисления среднего по окрестности. Границы обработать посредством зеркального отображения пикселей (`gfedcb|abcdefgh|gfedcba`). Угловые пиксели From a17ca537d4872a84ae9a763b23b187ab66c2836e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D1=83=D1=81=D1=82=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0=20?= =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D0=BD=D1=82=D0=B8=D0=BD=D0=B0=20=D0=94?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B5=D0=B2=D0=BD=D0=B0?= Date: Thu, 28 Jan 2016 15:50:12 +0300 Subject: [PATCH 4/4] Test Git client --- samples/matrix_sample.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/samples/matrix_sample.cpp b/samples/matrix_sample.cpp index c176d27..0f5e1b8 100644 --- a/samples/matrix_sample.cpp +++ b/samples/matrix_sample.cpp @@ -1,6 +1,7 @@ #include "matrix.hpp" #include "filters.hpp" + using namespace std; int main()