600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > FPGA图像处理-图像色彩空间

FPGA图像处理-图像色彩空间

时间:2023-10-17 04:01:16

相关推荐

FPGA图像处理-图像色彩空间

上周的缩放已写完,代码放公司了,端午假期结束,再补上FPGA缩放那部分把!!!!

买了本FPGA图像处理的书,每天记录一下学习内容。用FPGA的盆友应该都知道FPGA开发算法时间周期长,并且对于图像数据的量化可能影响算法的实际效果,所以对于书上算法的测试我将会用pythonHLS来验证,对于有必要的算法将会用FPGA进行实现

图像色彩空间

YUV色彩空间:YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL,Phase Alternation Line),是PAL和SECAM模拟彩色电视制式采用的颜色空间。Y、U、V几个字母不是英文单词的组合词,Y代表亮度,其实Y代表明亮度,也就是图像的灰度值;UV代表色差,U和V是构成彩色的两个分量。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有 Y信号分量而没有U、V信号分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的相容问题,使黑白电视机也能接收彩色电视信号。

YCbCr色彩空间:YCBCR或是Y’CBCR,是色彩空间的一种,通常会用于影片中的影像连续处理,或是数字摄影系统中。其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。主要的子采样格式有 YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4。

YUV模型与RGB色彩模型的关系可以用一下的两个矩阵来表示:

[ Y U V ] = [ 0.299 0.587 0.114 − 0.148 − 0.289 0.437 0.615 − 0.515 − 0.100 ] [ R G B ] [ R G B ] = [ 1 0 1.140 1 − 0.395 − 0.581 1 2.032 0 ] [ Y U V ] \begin{aligned} \quad \begin{bmatrix} Y \\ U \\ V\end{bmatrix} &=\begin{bmatrix} 0.299 & 0.587 & 0.114 \\ -0.148 & -0.289 & 0.437 \\ 0.615 & -0.515 & -0.100\end{bmatrix}\begin{bmatrix} R \\ G\\ B\end{bmatrix} \quad \\[2ex] \quad \begin{bmatrix} R\\ G\\ B\end{bmatrix} &=\begin{bmatrix} 1& 0& 1.140\\ 1 & -0.395 & -0.581 \\ 1 & 2.032 & 0 \end{bmatrix}\begin{bmatrix} Y \\ U \\ V\end{bmatrix} \quad \end{aligned} ⎣⎡​YUV​⎦⎤​⎣⎡​RGB​⎦⎤​​=⎣⎡​0.299−0.1480.615​0.587−0.289−0.515​0.1140.437−0.100​⎦⎤​⎣⎡​RGB​⎦⎤​=⎣⎡​111​0−0.3952.032​1.140−0.5810​⎦⎤​⎣⎡​YUV​⎦⎤​​

YCbCr模型与RGB色彩模型的关系可以用一下的两个矩阵来表示:

[ Y C b C r 1 ] = [ 0.2990 0.5870 0.1140 0 − 0.1687 − 0.3313 0.5000 128 0.5000 − 0.4187 − 0.0813 128 0 0 0 1 ] [ R G B 1 ] [ R G B ] = [ 1 1.40200 0 1 − 0.34414 − 0.71414 1 1.77200 0 ] [ Y C b − 128 C r − 128 ] \begin{aligned} \quad \begin{bmatrix} Y \\ Cb\\ Cr \\ 1 \end{bmatrix} &=\begin{bmatrix} 0.2990 & 0.5870 & 0.1140 & 0 \\ -0.1687 & -0.3313 & 0.5000 & 128 \\ 0.5000 & -0.4187 & -0.0813 & 128 \\ 0 & 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} R \\ G\\ B \\ 1\end{bmatrix} \quad \\[2ex] \quad \begin{bmatrix} R \\ G \\ B\end{bmatrix} &=\begin{bmatrix} 1 & 1.40200 & 0 \\ 1 & -0.34414 & -0.71414 \\ 1& 1.77200 & 0 \end{bmatrix}\begin{bmatrix} Y \\ Cb-128 \\ Cr-128 \end{bmatrix} \quad \end{aligned} ⎣⎢⎢⎡​YCbCr1​⎦⎥⎥⎤​⎣⎡​RGB​⎦⎤​​=⎣⎢⎢⎡​0.2990−0.16870.50000​0.5870−0.3313−0.41870​0.11400.5000−0.08130​01281281​⎦⎥⎥⎤​⎣⎢⎢⎡​RGB1​⎦⎥⎥⎤​=⎣⎡​111​1.40200−0.344141.77200​0−0.714140​⎦⎤​⎣⎡​YCb−128Cr−128​⎦⎤​​

YUV python 程序(YCbCr修改系数即可):

image=cv2.imread("songshu.jpg")image = image[:,:,::-1]plt.imshow(image)plt.show()YUV=np.zeros((720,1080,3))matrix_3x3 = np.array([[0.299, 0.587, 0.114], #matrix_3x3_pinv = np.linalg.inv(matrix_3x3)[-0.148, -0.289, 0.437],[0.615, -0.515, -0.100]])print(np.matmul(matrix_3x3,image[0][0]))for i in range(image.shape[0]):#720for j in range(image.shape[1]):#1080RGB=image[i][j]YUV[i][j]=np.matmul(matrix_3x3,RGB)np.set_printoptions(precision = 3,suppress = True)print(YUV)

rgb显示(YUV不好直接显示 ):

矩阵的逆矩阵和理论几乎一致:

溜了溜了 吃粽子去。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。