Как я могу сгенерировать грани куба YCbCr в VB.NET

Я написал программу на VB.NET для создания только одной грани куба цветового пространства YCbCr. Я хочу, чтобы окончательное изображение выглядело похожим на плоскость CbCr при постоянной яркости в Википедии (где Y=1).

В конечном итоге я хочу создать изображения всех 6 граней куба, чтобы я мог создать анимированный трехмерный куб в Photoshop (я уже знаю, как создать куб в Photoshop, когда у меня есть изображения его граней). Готовый куб будет похож на куб YUV на веб-сайте softpixel.

Ниже приведены результаты моей программы и кода на данный момент. У меня не было проблем с созданием граней куба цветового пространства RGB, но куб YCbCr оказался проблематичным. Я применил формулу преобразования YCbCr к каждому пикселю на грани куба RGB, но центр передней грани должен быть белым, а центр противоположной грани должен быть черным. Может кто-нибудь сказать мне, какой код мне не хватает?

Public Class Form2
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    PictureBox1.Width = 255
    PictureBox1.Height = 255

    'create new bitmap
    Dim newbmp As Bitmap = New Bitmap(255, 255)

    'Generate the new image
    Dim x As Integer
    Dim y As Integer

    For y = 0 To 254
        For x = 0 To 254
            Dim yval As Integer
            Dim cb As Integer
            Dim cr As Integer

            'Convert to YCbCr using these formulas
            '0+(0.299*RED)+(0.587*GREEN)+(0.114*BLUE)
            '128-(0.168736*RED)-(0.331264*GREEN)+(0.5*BLUE)
            '128+(0.5*RED)-(0.418688*GREEN)-(0.081312*BLUE)

            yval = Math.Floor(0 + (0.299 * x) + (0.587 * y) + (0.114 * 255))
            cb = Math.Floor(128 - (0.168736 * x) - (0.331264 * y) + (0.5 * 255))
            cr = Math.Floor(128 + (0.5 * x) - (0.418688 * y) - (0.081312 * 255))
            newbmp.SetPixel(x, y, Color.FromArgb(yval, cb, cr))
        Next x
    Next y
    'load image into picturebox
    PictureBox1.Image = newbmp
End Sub

Конец класса

0 ответов

Другие вопросы по тегам