【问题标题】:Replace defined colors of a source image with a background image用背景图像替换源图像的定义颜色
【发布时间】:2014-10-26 17:27:07
【问题描述】:

我需要编写一个带有 4 个参数的函数: 更改图像的蓝色背景并将其替换为其他图像

【问题讨论】:

  • 您能提供您尝试过的方法以便我们提供帮助
  • 那么继续编写函数...然后将您的问题与代码一起提出...
  • blue color 是什么?
  • 阈值的用途是什么?应该替换背景图像的哪些像素,与color 具有相同颜色的像素或与原始图像中删除的像素位于相同位置的像素?这个问题的表述很糟糕。

标签: matlab image-processing


【解决方案1】:
function bluescreen(A,B,c,thresh)
A = imread(A);
B = imread(B);
Ar = A(:,:,1);
Ag = A(:,:,2);
Ab = A(:,:,3);
Br = B(:,:,1);
Bg = B(:,:,2);
Bb = B(:,:,3);
logmap = zeros([size(A,1),size(A,2)]);
logmap = (Ar > (c(1)-thresh)).*(Ar < (c(1)+thresh)).*...
     (Ag > (c(2)-thresh)).*(Ag < (c(2)+thresh)).*...
     (Ab > (c(3)-thresh)).*(Ab < (c(3)+thresh));
Ar(logmap == 1) = Br(logmap == 1);
Ag(logmap == 1) = Bg(logmap == 1); 
Ab(logmap == 1) = Bb(logmap == 1);
A = cat(3 ,Ar,Ag,Ab);
imshow(A);
end

当你这样称呼它时, bluescreen('peppers.png','tape.png',[200 10 10],50);

它给你,

我不确定你想要什么!

好的。我剪切了两张图片并调用了bluescreen('A.png','B.png',[30 30 120],80);

我明白了,

我认为已经足够了,不是吗?!

【讨论】:

  • 我使用了图片中的代码,但它不起作用,所以我在找到蓝色像素的 RGB 颜色后更改了蓝色的值[63 93 130],但它不起作用所以我更改阈值,这就是我得到的!它看起来像一张嘈杂的图片。抱歉问了很多问题store2.up-00.com/2014-10/1414350711211.png ....store1.up-00.com/2014-10/1414352144521.png
  • @khulood,现在检查答案。确保您的两个图像具有相同的大小并且具有pngjpg 格式。
  • 我按照你的方式调用了这个函数,但是它不起作用,你有没有在代码中改变任何东西?
  • @khulood,不,我没有。我认为您无法上传图片,因此请通过电子邮件将您的原始图片发送给我。您可以在我的个人资料中找到我的电子邮件。
  • @kamtal,请删除您的第一个答案,因为这是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 2011-11-23
相关资源
最近更新 更多