Нейронная сеть усредняющая цвета - Visual Basic .NET
Формулировка задачи:
Всем доброго времени суток!
К сожалению мой уровень знаний и практических навыков не позволяет создать нейронную сеть, но есть большое желание
Суть желаемой сети проста: допустим изображение имеет 256 цветов, а в палитре у художника всего 12. Сеть должна "нарисовать" картинку с наименьшими искажениями.
Даже не знаю с чего начать...
Буду рад любым комментариям
Решение задачи: «Нейронная сеть усредняющая цвета»
textual
Листинг программы
Imports System.Drawing Module Module1 Sub Main() Console.WriteLine("ЗАГРУЖАЕМ ИЗОБРАЖЕНИЕ") Dim StartBitmap As Bitmap = Bitmap.FromFile("E:\1.jpg") Dim ResultBitmap As New Bitmap(StartBitmap.Width, StartBitmap.Height) Dim ListColor As New List(Of Color) Dim ListMidValue As New List(Of Integer) Dim Rnd As New Random Console.WriteLine("ГЕНЕРИРУЕМ ПАЛИТРУ ИЗ 48 ЦВЕТОВ") For I As Integer = 0 To 47 Step 1 ListColor.Add(Color.FromArgb(255, Rnd.Next(256), Rnd.Next(256), Rnd.Next(256))) Dim R As Integer = ListColor(I).R Dim G As Integer = ListColor(I).G Dim B As Integer = ListColor(I).B ListMidValue.Add(Fix((R + G + B) / 3)) Next Console.WriteLine("РИСУЕМ ИЗОБРАЖЕНИЕ НАШЕЙ ПАЛИТРОЙ") For I As Integer = 0 To StartBitmap.Width - 1 Step 1 For J As Integer = 0 To StartBitmap.Height - 1 Step 1 Dim TempColor As Color = StartBitmap.GetPixel(I, J) Dim Delta As Integer = Integer.MaxValue Dim IntColor As Integer = 0 For K As Integer = 0 To ListColor.Count - 1 Step 1 Dim Temp As Integer = GetDelta(TempColor, ListColor(K)) If Temp < Delta Then Delta = Temp IntColor = K End If Next ResultBitmap.SetPixel(I, J, ListColor(IntColor)) Next Next Console.WriteLine("СОХРАНЕНИЕ ИЗОБРАЖЕНИЯ") ResultBitmap.Save("E:\2.jpg") Console.WriteLine("ИЗОБРАЖЕНИЕ ГОТОВО!") Console.ReadLine() End Sub Function GetDelta(ByVal EnterColor As Color, ByVal ExitColor As Color) As Integer Dim EnterR As Integer = EnterColor.R Dim EnterG As Integer = EnterColor.G Dim EnterB As Integer = EnterColor.B Dim ExitR As Integer = ExitColor.R Dim ExitG As Integer = ExitColor.G Dim ExitB As Integer = ExitColor.B Dim Delta As Integer = Math.Sqrt(((EnterR - ExitR) ^ 2) + ((EnterG - ExitG) ^ 2) + ((EnterB - ExitB) ^ 2)) Return Delta End Function End Module
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д