问题标签 [ycbcr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
image-processing - YCbCr 视频输入 STM32F746
我正在开发基于 STM32F746 的定制板,该板与 LCD 和 ADV7180 视频解码器 IC 集成。
我将 ADV7180 配置为在自由运行模式下运行。使用 DCMI 获取相机数据到指定的缓冲区。
我正在尝试将 YCbCr 4:2:2 数据转换为 RBG 数据。我正在获取线路事件。. 从实时事件中,我正在执行以下代码将其转换为 RGB,然后使用 ARGB888 将其加载到 LCD。
LCD_FRAME_BUFFER 0xC0000000 LCD_FRAME_BUFFER_LAYER1 0xC0130000 CAMERA_FRAME_BUFFER 0xC0260000
我已经用 LCD_FRAME_BUFFER 初始化了 LCD,并且我只使用单层。
我正在转换数据并使用中间 LCD_FRAME_BUFFER_LAYER1 缓冲区将其复制到 LCD_FRAME_BUFFER。
DCMI --> CAMERA_FRAME_BUFFER --> 转换 --> LCD_FRAME_BUFFER_LAYER1 --> DMA -> LCD_FRAME_BUFFER
但是,我没有将自由运行模式屏幕作为蓝屏。
vb.net - 如何在 VB.NET 中生成 YCbCr 立方体的面
我在 VB.NET 中编写了一个程序来生成 YCbCr 颜色空间立方体的一个面。我希望最终图像看起来类似于维基百科上恒定亮度下的 CbCr 平面(其中 Y=1)。
最终,我想创建立方体所有 6 个面的图像,这样我就可以在 Photoshop 中制作动画 3D 立方体(我已经知道如何在 Photoshop 中创建立方体的面图像)。完成的立方体看起来类似于softpixel 网站上的YUV 立方体。
下面是我的程序的输出和到目前为止的代码。我生成 RGB 颜色空间立方体的面没有问题,但 YCbCr 立方体被证明是有问题的。我已经对 RGB 立方体正面的每个像素应用了 YCbCr 转换公式,但是正面的中心应该是白色的,而对面的中心应该是黑色的。有人可以告诉我我缺少什么代码吗?
结束类
python - python“无法分配给比较”错误
我想要单个 YCbCr 通道小于或大于 128 的图片设置为 0。但我不断收到错误“无法分配给比较”,我真的不知道我做错了什么。
这是代码:
这张图显示了我实现的不同模式:
matlab - 如何在 MATLAB 中手动将 Y Cb Cr 转换为 RGB?
我的任务是对一系列 JPEG 执行 4:2:0 色度二次采样(颜色压缩)。
第一步是确保我可以生成 Y、Cb 和 Cr 值,然后转换回 RGB 并显示图像。然后我可以回去添加我的子采样逻辑。
我很确定我有正确的公式来生成 Y、Cb 和 Cr 值,但我无法找出返回 RGB 和打印的正确方法。
我们不允许使用任何内置函数(这通常会出现在帮助解决这个问题的过程中)。
我附上了如何获取 Y Cb 和 Cr 值以及如何尝试恢复 RGB 的代码。
目前,在这段摘录之后在 newImage 上运行“imshow”时出现绿屏。
orig 是原始图像,newImage 是我在这段摘录之后运行的“imshow”。
shader - 如何在 vulkan 中使用多个不可变采样器?
我想在 vulkan 的一个渲染命令中使用多个不可变采样器,但我不知道如何在片段着色器中选择它们。要了解我想要什么以及我的意思,我首先要解释工作版本。
我使用 vulkan 为多个纹理编写了一个渲染管道。第一个版本只支持 ARGB (VK_FORMAT_R8G8B8A8_UNORM) 纹理,工作正常。
为了记录命令缓冲区,我执行了以下操作:
- vkBeginCommandBuffer
- vkCmdBeginRenderPass
- vkCmdBindPipeline
- 对于每个纹理
- vkCmdBindVertexBuffers
- vkCmdBindIndexBuffer
- vkCmdBindDescriptorSets(设置两个 ubos 和图像视图)
- vkCmdDrawIndexed
- vkCmdEndRenderPass
- vkEndCommandBuffer
每个纹理都被正确绘制,因为在 4.3 中。我将它的图像视图绑定到包含纹理采样器的片段着色器。
所以现在到我正在努力的部分:
如果频繁更新,ARGB 纹理的使用效率非常低。所以我尝试直接在着色器中使用像 I420 这样的 YCbCr 纹理。在弄清楚如何设置它们之后,我注意到它们必须用作不可变采样器(VkDescriptorSetLayoutBinding pImmutableSamplers),只能在定义描述符集布局时静态绑定(vkCreateDescriptorSetLayout)。这意味着一遍又一遍地使用一个描述符集布局不再起作用。正确的?
为了解决这个问题,我为图形管道 (vkCreateGraphicsPipelines) 提供了多个描述符集布局 (vkCreatePipelineLayout)。现在,我能够将每个纹理绑定到管道,这意味着,我可以将多个不可变采样器静态绑定,从不交换。到目前为止一切都很好,但我的片段着色器只使用第一个采样器(准确地说,第一个描述符集)来渲染输出。起初我以为描述符集会取自 vkCmdBindDescriptorSets,但我错了。
这是我的片段着色器:
我已经想通了,可以为着色器的布局提供一个集合(例如layout(set=1, binding=1)),但我需要在渲染任务中更新这个集合(每个纹理),就像我在绘制之前对所有其他绑定所做的那样。
有什么建议么?这里推荐的解决方案是什么?
image - Go 中的 RGB 到 YUV 420P 图像转换
我想知道,如何在 Go 中执行从 RGB 到 YUV 420P 图像的转换(更准确地说*image.RGBA
是*image.YcbCr
)。image
我还没有在包中找到任何标准方法。由于我也没有找到任何库,我唯一的想法是使用 逐个像素地制作它color.RGBToYCbCr()
,但我意识到*image.YcbCr
没有Set()
直接处理像素的方法,所以我有点困惑。我会很感激一些方向或代码。问候
python - 如何在 YCbCr 模式下正确读取图像?
我如何知道我是否在 YCbCr 模式下正确读取了 PNG 图像?我得到了不同的像素值,这令人困惑。
我想使用方法 1,因为 scipy 已经为我完成了转换,但我无法找到它的源代码。所以我自己定义了转换函数,但我得到了不同的像素值。
image-processing - 从给定的调色板中找到匹配的颜色
我有一个调色板,要么是 32 要么是 256。然后我有一个输入颜色流(在 RGB 中)。我想找出传入颜色与调色板中的哪种颜色最匹配。我相信这种算法被用于许多图像编辑软件中。
到目前为止,我想出了以下内容:
distance
对于每种传入的颜色,通过找出与调色板中每种颜色的距离,找到调色板中最小的颜色。- 为了找到距离,以下方法之一:
- R、G 和 B 值差的平方和 (
(R1-R2)² + (G1-G2)² + (B1-B2)²
) - 将颜色转换为 HSV,使用 H、S 和 V 值的加权平均值作为距离指标。就像是
3 ✕ (H1-H2)² + 2 ✕ (S1-S2)² + (V1-V2)²
- YCbCr 距离
- R、G 和 B 值差的平方和 (
我特别在寻找两件事。
- 有没有比检查调色板中每种颜色的距离更好的方法?我正在寻找某种分箱算法来从调色板中找到正确的颜色。
- 如果坚持检查调色板中每个项目的距离,是否有标准公式被认为是标准的?
python - 如何将 Ycbcr numpy 数组保存到图像而不更改其数组点?
我有一个 rgb 图像,我将其转换为 Ycbcr 数组。
plt.savefig("Ycbcr_new.jpg")
# 保存在我桌面上的一个新文件夹中
我将此数组保存为 Ycbcr_new.jpg,现在我将这个新的 Ycbcr_new 图像转换为一个数组。
答案是:“假”
我的问题是是否可以将新的 YCbCr 数组保存到我桌面上的 YCbCr 图像中而不更改其数组点?
谢谢