(define-record-type yuv (fields y u v)) ;; rgb -> yuv (define rgb->yuv (lambda (c) (let ((r (rgb-r c)) (g (rgb-g c)) (b (rgb-b c))) (make-yuv (+ (* +0.299 r) (* +0.587 g) (* +0.114 b)) (+ (* -0.147 r) (* -0.289 g) (* +0.436 b)) (+ (* +0.615 r) (* -0.515 g) (* -0.100 b)))))) #| Y = + 0.299R + 0.587G + 0.114B U = + 0.492(B - Y) = - 0.147R - 0.289G + 0.436B V = + 0.877(R - Y) = + 0.615R - 0.515G - 0.100B |#