Нейронная сеть усредняющая цвета - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы