Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 09.12.2019
Сообщений: 85

Размытие через функцию насыщения и матрицу коэффициентов

21.01.2020, 15:11. Показов 1683. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Привет!

сделал программу которая импортирует картинку и переводит её в картинку-негатив. Пытаюсь её переделать в программу которая размывает картинку через через функцию насыщения и матрицу коэффициентов?

Почитал вот эту статью https://habr.com/ru/post/142818/, что то прояснилось но вопросы остались...

Можете пожалуйста помочь/подсказать в каком направлении делать?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            const int maxRgb = 255;
            Bitmap image = new Bitmap("..\\..\\image.jpg");
            
            for (int y = 0; y < image.Height; ++y)
            {
                for (int x = 0; x < image.Width; ++x)
                {
                    Color pixel = image.GetPixel(x, y);
                    Color newColor = Color.FromArgb(maxRgb - pixel.R, maxRgb - pixel.G, maxRgb - pixel.B);
                    
                    image.SetPixel(x, y, newColor);
                }
            }
 
            image.Save("out.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.01.2020, 15:11
Ответы с готовыми решениями:

Обнулить матрицу через функцию
Обнулить матрицу через function в Паскаль. Нужно сделать наподобие этой: Program Podprogramma; Var a1,a2,a3,a4,max:integer; ...

Как вывести матрицу коэффициентов
Здравствуйте!!! Проблема следующая: Помогаю девушке своей с дипломом. Есть практические задания по машинному обучению. В...

Представить матрицу коэффициентов в виде суммы
Дана матрица a:=11; a:=2; a:=-2; a:=6; a:=-2; a:=7; a:=2; a:=0; a:=0; a:=-1; a:=14; a:=-1; a:=1; ...

1
1 / 1 / 0
Регистрация: 09.12.2019
Сообщений: 85
07.11.2020, 10:23  [ТС]
Всем Привет

кому интересно может будет, данную задачу решил, ловите код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Drawing.Imaging;
 
namespace Blur
{
    class Blur
    {
        private static double LimitColorValue(double color)
        {
            if (color > 255)
            {
                return 255;
            }
 
            if (color < 0)
            {
                return 0;
            }
 
            return color;
        }
 
        private static Bitmap ApplyFilter(Bitmap sourceImage, double[,] matrix)
        {
            Bitmap resultBitmap = new Bitmap(sourceImage);
 
            int matrixWidth = matrix.GetLength(0);
            int offset = (matrixWidth - 1) / 2;
 
            for (int imageX = offset; imageX < sourceImage.Width - offset; imageX++)
            {
                for (int imageY = offset; imageY < sourceImage.Height - offset; imageY++)
                {
                    double blue = 0.0;
                    double green = 0.0;
                    double red = 0.0;
 
                    for (int x = -offset; x <= offset; x++)
                    {
                        for (int y = -offset; y <= offset; y++)
                        {
                            Color pixel = sourceImage.GetPixel(imageX + x, imageY + y);
                            red += pixel.R * matrix[x + offset, y + offset];
                            green += pixel.G * matrix[x + offset, y + offset];
                            blue += pixel.B * matrix[x + offset, y + offset];
                        }
                    }
 
                    blue = LimitColorValue(blue);
                    green = LimitColorValue(green);
                    red = LimitColorValue(red);
 
                    Color newColor = Color.FromArgb((int)red, (int)green, (int)blue);
                    resultBitmap.SetPixel(imageX, imageY, newColor);
                }
            }
 
            return resultBitmap;
        }
 
        static void Main(string[] args)
        {
            double[,] matrixOfTheeByThree = { {1/9.0, 1/9.0, 1/9.0},
                                            {  1/9.0, 1/9.0, 1/9.0},
                                            {  1/9.0, 1/9.0, 1/9.0}};
 
            double[,] matrixOfFiveByFive = { {1/25.0, 1/25.0, 1/25.0, 1/25.0, 1/25.0},
                                           {  1/25.0, 1/25.0, 1/25.0, 1/25.0, 1/25.0},
                                           {  1/25.0, 1/25.0, 1/25.0, 1/25.0, 1/25.0},
                                           {  1/25.0, 1/25.0, 1/25.0, 1/25.0, 1/25.0},
                                           {  1/25.0, 1/25.0, 1/25.0, 1/25.0, 1/25.0}};
 
            Console.WriteLine("Импорт картинки и начало обработки ");
 
            Bitmap sourceImage = new Bitmap("..\\..\\image.jpg");
 
            Bitmap resultBitmap3x3 = ApplyFilter(sourceImage, matrixOfTheeByThree);
 
            Bitmap resultBitmap5x5 = ApplyFilter(sourceImage, matrixOfFiveByFive);
 
            Console.WriteLine("Завершение обработки картинки и экспорт в файл");
 
            resultBitmap3x3.Save("..\\..\\out3x3.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            resultBitmap5x5.Save("..\\..\\out5x5.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
 
            Console.ReadKey();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.11.2020, 10:23
Помогаю со студенческими работами здесь

Размытие на мониторе подключённом через hdmi-vga конвертер
Подключил к видеокарте 2 монитора Samsung S23B300. Оба монитора VGA без DVI. Один монитор подключил через переходник DVI-&gt;VGA к...

Оценить регрессию. Вычислить матрицу парных коэффициентов корреляции
Здравствуйте парни (девушки) у меня проблемка сказали решить одну и ту же задачу в 6 программах статистической обаботки данных я не могу...

Минимизировать функцию F (х1х2х3) методом неопределенных коэффициентов
Вот ссылка на такое заданиеhttp://textcol.ru/index-14387.html?page=15 Не пойму.когда мы вычеркнули уже все нулевые коэффициенты,как...

Многочлен Pn (x) задан массивом собственных коэффициентов A (n + 1). Найти массив коэффициентов производной этого многочлена
Многочлен Pn (x) задан массивом собственных коэффициентов A (n + 1). Найти массив коэффициентов производной этого многочлена, помогите)

Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN()
а помогите теперь эту задачку #include &lt;iostream&gt; int main() { int last = 0, next = 1; long sum = 1; for(;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru