gpt4 book ai didi

image - RGB 到标准 rgb 转换。矢量化

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:32 27 4
gpt4 key购买 nike

我正在编写一段代码,它必须从 RGB 图像转换为 rgb 标准化空间。我已经使用 for 格式使用它,但它运行速度太慢,我需要评估大量图像。我正在尝试矢量化完整功能以加快它的速度。我现在有以下内容:

     R = im(:,:,1);
G = im(:,:,2);
B = im(:,:,3);

r=reshape(R,[],1);
g=reshape(G,[],1);
b=reshape(B,[],1);

clear R G B;

VNormalizedRed = r(:)/(r(:)+g(:)+b(:));
VNormalizedGreen = g(:)/(r(:)+g(:)+b(:));
VNormalizedBlue = b(:)/(r(:)+g(:)+b(:));

NormalizedRed = reshape(VNormalizedRed,height,width);
NormalizedGreen = reshape(VNormalizedGreen,height,width);
NormalizedBlue = reshape(VNormalizedBlue,height,width);

主要问题是当它到达 VNormalizedRed = r(:)/(r(:)+g(:)+b(:)); 时显示内存不足错误(这真的很奇怪,因为我刚刚释放了三个相同大小的向量)。错误是什么? (已解决)

是否有可能以更有效的方式执行相同的过程?

编辑:

在使用 Martin sugestions 之后,我发现 reshape 函数不是必需的,可以用一个简单的代码来做同样的事情:

     R = im(:,:,1);
G = im(:,:,2);
B = im(:,:,3);

NormalizedRed = R(:,:)./sqrt(R(:,:).^2+G(:,:).^2+B(:,:).^2);
NormalizedGreen = G(:,:)./sqrt(R(:,:).^2+G(:,:).^2+B(:,:).^2);
NormalizedBlue = B(:,:)./sqrt(R(:,:).^2+G(:,:).^2+B(:,:).^2);

norm(:,:,1) = NormalizedRed(:,:);
norm(:,:,2) = NormalizedGreen(:,:);
norm(:,:,3) = NormalizedBlue(:,:);

最佳答案

我相信你想要

VNormalizedRed = r(:)./(r(:)+g(:)+b(:));

注意 / 前面的点,它指定逐个元素划分。没有点,您正在求解一个方程组——这可能不是您想要做的。这可能也解释了为什么您会看到高内存消耗。

关于image - RGB 到标准 rgb 转换。矢量化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865866/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com