Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Ярославский государственный технический университет»
Кафедра «Информационные системы и технологии»
Курсовая работы защищена
с оценкой ______________
Руководитель,
Ст. преподаватель
Близнюк О.Н.
«__» ___________2024
РАЗРАБОТКА ПРИЛОЖЕНИЯ ДЛЯ АНАЛИЗА ЗАВИСИМОСТИ
МЕЖДУ СТАЖЕМ РАБОТЫ И УРОВНЕМ ЗАРАБОТНОЙ ПЛАТЫ
Пояснительная записка к курсовой работе по дисциплине
«Инструментальные средства проектирования ИС»
ЯГТУ 09.03.02 – 010 КР
Нормоконтролер
канд. техн. наук
Раухваргер А. Б.
«__» ___________2025
Работу выполнили
студенты группы ЦСИИ-35
Баранов М.В.
Поляшов Д.E.
«__» ___________2025
2025
Федеральное агентство по образованию Государственное образовательное
учреждение высшего
профессионального образования
«Ярославский государственный технический университет»
Кафедра ___________________________
ЗА Д А Н И Е №________
ПО КУРСОВОМУ ПРОЕКТИРОВАНИЮ
Студенту ___________ факультет ________ курс _____ группа _______
1 Тема проекта и исходные данные
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________ 2
Представить следующие материалы
1) текстовые
а)______________________________________________________
б)______________________________________________________
в)______________________________________________________
г)______________________________________________________
д)______________________________________________________
е)______________________________________________________
ж)______________________________________________________
2) графические
а)______________________________________________________
б)______________________________________________________
в)______________________________________________________
3 Рекомендуемая литература и материалы
__________________________________________________________________
________________________________________________________ 4 Дата
выдачи задания______________________
5 Срок сдачи законченного проекта_______________________
6 Отметка о явке на консультацию:
1)____________________2)___________________3)______________
4)____________________5)___________________6)______________
Руководитель проекта
Зав кафедрой
СОДЕРЖАНИЕ
1. Введение ................................................... Ошибка! Закладка не определена.
2. Описание используемых алгоритмов .... Ошибка! Закладка не определена.
2.1. Общая схема работы ......................... Ошибка! Закладка не определена.
2.2. Сегментация по зелёному каналу . Ошибка! Закладка не определена.
2.3. Формирование изображения выбранной градации .Ошибка! Закладка
не определена.
2.4. Сохранение всех слоёв ................... Ошибка! Закладка не определена.
2.5. Масштабирование и просмотр ...... Ошибка! Закладка не определена.
3. Архитектура программы ........................ Ошибка! Закладка не определена.
3.1. Модули и пространства имён ........... Ошибка! Закладка не определена.
3.2. Класс MainForm ................................. Ошибка! Закладка не определена.
3.3. Класс ImageViewerForm ................... Ошибка! Закладка не определена.
4. Инструкция по работе с программой .... Ошибка! Закладка не определена.
4.1. Загрузка изображения. .................... Ошибка! Закладка не определена.
4.2. Настройка параметров сегментации. ................... Ошибка! Закладка не
определена.
4.3. Запуск сегментации. ........................ Ошибка! Закладка не определена.
4.4. Просмотр отдельных градаций. ..... Ошибка! Закладка не определена.
4.5. Увеличенный просмотр................... Ошибка! Закладка не определена.
4.6. Сохранение слоёв............................. Ошибка! Закладка не определена.
5. Исследование результатов ..................... Ошибка! Закладка не определена.
6. Заключение .............................................. Ошибка! Закладка не определена.
7. Список Литературы................................. Ошибка! Закладка не определена.
7. Приложение ............................................. Ошибка! Закладка не определена.
Реферат
45 с., 37 рис.
Ключевые слова: СЕГМЕНТАЦИЯ ИЗОБРАЖЕНИЙ, ЗЕЛЁНЫЙ
КАНАЛ, WINDOWS FORMS, .NET FRAMEWORK 4.8, C#,
BITMAPDATA, PIXELFORMAT, MARSHAL, МАСШТАБИРОВАНИЕ.
Задачи:
Результатом курсовой работы является программный продукт,
реализующий следующие задачи:
1.
Анализ методов цветовой сегментации: изучение основных
подходов к разделению изображения на области по цветовым каналам; выбор
критерия сегментации по зелёному каналу.
2.
Проектирование интерфейса на базе Windows Forms:
разработка удобной формы для загрузки изображения, настройки числа
градаций и переключения между ними; добавление элементов управления
(чек-бокс «Только зелёные», радиокнопки для фона, выпадающий список для
градаций).
3.
Реализация алгоритма сегментации по зелёному каналу:
чтение
пиксельных
данных
из Bitmap через LockBits и Marshal.Copy;
распределение индексов пикселей по спискам градаций в зависимости от
значения G; фильтрация «зелёно-доминающих» точек при включённом
режиме «Только зелёные».
4.
Отображение
результатов
сегментации:
построение
выходного Bitmap, где остаются лишь пиксели выбранной градации на чёрном
или белом фоне; динамическое обновление при смене градации и фона.
5.
Сохранение слоёв сегментации: генерация отдельных
изображений для каждой градации и их экспорт в выбранную пользователем
папку; автоматическая нумерация файлов (grade_0.png, grade_1.png …).
6.
Просмотр
и
масштабирование:
разработка
формыпросмотрщика с поддержкой колеса мыши для плавного зума и
перетаскиванием для панорамирования; обеспечение первоначального
вписывания изображения в окно и ограничение минимального масштаба.
7.
Тестирование и отладка: проверка корректности сегментации на
наборах тестовых изображений разных размеров и освещённости; замер
времени обработки и оптимизация работы с буферами.
В результате выполнена полнофункциональная Windows Forms-утилита
для сегментации по зелёному каналу с гибкой настройкой, просмотром и
сохранением результатов.
Краткое пояснение изменений
1. Частная корреляция (beta_pcorr)
o Мы строим DataFrame tmp только из строк, где нет NaN в salary, experience,
education и position.
o Затем кодируем education и position в числовые столбцы edu_code и
pos_code.
o Вызываем pg.partial_corr(data=tmp, x="experience", y="salary",
covar=["edu_code","pos_code"]). Эта функция возвращает DataFrame с
колонками r (коэффициент частной корр.) и p-val (p-значение).
o Сохраняем beta_pcorr = r и beta_pcorr_p = p-val, чтобы вывести их в
шаблоне.
2. OLS-регрессия (salary ~ experience)
o Берём только строки reg_df = df.dropna(subset=["salary","experience"]).
o Строим модель model = sm.OLS(reg_df["salary"],
sm.add_constant(reg_df["experience"])).fit().
o Достаём из неё intercept и slope (коэффициент перед experience), а также
model.rsquared (R²).
o Линию регрессии задаём как две точки x_min, y_min и x_max, y_max. Всё
приводим к float, чтобы потом спокойно превращать в JSON (reg_line_json =
json.dumps(reg_line)).
3. Шаблон (analytics.html)
o Вместо старых pcorr/slope/r2 мы теперь в блоке «Ключевые выводы»
выводим только beta_pcorr и r2_value.
o JS-часть, рисующая heatmap и scatter+регрессию, ждёт, что в контексте
будут именно corr_json, scatter (т. е. scatter_json) и reg_line (т. е.
reg_line_json). Внутри шаблона ссылаемся на них как {{ corr_json|safe }}, {{
scatter|safe }}, {{ reg_line|safe }}.
4. Почему так проще и понятнее
o Заказчик просил убрать «выбор параметров» и просто сосредоточиться на
коэффициенте корреляции опыта и зарплаты (то есть β) с контролем
остальных факторов (образования и должности).
o Поэтому мы выкинули лишний код для динамического выбора признаков
(множественные галочки, выпадающие списки и т. д.). Осталось ровно две
аналитических метрики:
β (частная корреляция) для опыта (experience).
R² качества OLS-модели.
5. Проверьте, чтобы в шаблоне analytics.html совпадали имена переменных
o beta_pcorr – коэффициент частной корр.
o beta_pcorr_p – p-значение этой корреляции (если понадобится подсветка
“p<0.05”).
o r2_value – R² регрессии salary ~ experience.
Если вы правильно скопировали эту функцию целиком и заменили старую, а в шаблоне
прописали все упомянутые переменные (см. пример из предыдущего ответа), – то при
заходе на /analytics у вас будет:
Четыре KPI-карточки (avg/median salary, mean age, mean experience).
Блок «Ключевые выводы» с единственным пунктом:
o Частная корреляция “Стаж → Зарплата”: β = … (p < 0.05 / p ≥ 0.05)
Качество модели (R²): …
Две визуализации:
o
1. heatmap корреляций между salary, experience, age (если они есть).
2. scatter плот для “Стаж vs Зарплата” с наложенной линейной регрессией,
параметры которой мы взяли из reg_line.
Дальнейший набор “профессиональных метрик” (диапазон, квартиль, гендерный
разрыв, отклонение по образованию).
В итоге весь код становится заметно чище: вы убираете логику “выбора параметров” и
оставляете в analytics только то, что нужно по ТЗ — расчёт частной корреляции опыта
и зарплаты, учитывающей образование и должность.