Matlab 将源图像的定义颜色替换为背景图像
我需要编写一个包含4个参数的函数: 更改图像的蓝色背景并将其替换为其他图像Matlab 将源图像的定义颜色替换为背景图像,matlab,image-processing,Matlab,Image Processing,我需要编写一个包含4个参数的函数: 更改图像的蓝色背景并将其替换为其他图像功能蓝屏(A、B、c、thresh) 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)]); l
功能蓝屏(A、B、c、thresh)
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
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=0([大小(A,1),大小(A,2)]);
对数映射=(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);
结束
当你这样称呼它的时候,
bluescreen('peppers.png','tape.png',[200 10],50)代码>
它给你
我不知道你想要什么
嗯。我剪切了两幅图像,并调用了bluescreen('A.png','B.png',[30 120],80)代码>
我明白了
我觉得这已经足够好了,不是吗 你能提供你已经尝试过的,这样我们就可以继续写函数了。。。然后把你的问题和代码一起提出来……蓝色是什么?的目的是什么?应该替换背景图像中的哪些像素,哪些像素与原始图像中的颜色
颜色相同,哪些像素与删除的像素位于同一位置?这个问题表述得很糟糕。我在图片中使用了代码,但它不起作用,所以在找到蓝色像素的RGB颜色[63 93 130]后,我更改了蓝色的值,但它不起作用,所以我更改了阈值,这就是我得到的!它看起来像一幅吵闹的图画。抱歉问了这么多问题……@khulood,现在检查答案。确保你的两幅图像大小相同,并且格式为png
或jpg
格式。我按你的方式调用函数,但它不起作用,你是否更改了代码中的任何内容?@khulood,不,我没有。我想你不能上传图片,所以请发邮件给我你的原始图片。您可以在我的个人资料中找到我的电子邮件。@kamtal,请删除您的第一个答案,因为这是正确的答案。