谁可以帮我写一个MATLAB问题啊

16.各种材料提交需要不同底色的登记照,因此登记照换底可以满足不同场景需求。现有一张“ID_Photo”文件名的登记照,要求将蓝色背景换成红色背景,另外,需要排列成3×4的版面供打印

img

你好,差不多颜色替换了:

I1 = double(imread('a.jpg'));
[m,n,p] = size(I1);
I = reshape(I1, m*n, p);
blue = [67,142,219]; blue = blue/max(blue);
red = [255,0,0];
q =  I./repmat(max(I,[],2),1,p);
Q =  sqrt(sum((q-repmat(blue,m*n,1)).^2,2))<=0.1;
blue = mean(q(Q,:));
Q =  sqrt(sum((q-repmat(blue,m*n,1)).^2,2))<=0.1;
I(Q,:) = repmat(red, sum(Q), 1);
blue = mean(q(Q,:));
Q =  sqrt(sum((q-repmat(blue,m*n,1)).^2,2))<=0.12;
I(Q,:) = repmat(red, sum(Q), 1);
I = reshape(I, size(I1,1), size(I1,2), size(I1,3));
figure(1);clf
Y = zeros(size(I)); Ydct = Y;
I = I/255;
s = 3; r = 3;
Y(:,:,1)= medfilt2(I(:,:,1),[s,r]);
Y(:,:,2)= medfilt2(I(:,:,2),[s,r]);
Y(:,:,3)= medfilt2(I(:,:,3),[s,r]);
Y = Y*255;
Y = uint8(Y);
imshow(Y);

figure(2);clf
Y = Y(1:2:end,1:2:end,:);
[m,n,p] = size(Y);
ratio = floor(size(Y,2)/60);
Z = uint8(255*ones(m+2*ratio, n+2*ratio,p));
Z(ratio+1:m+ratio,ratio+1:n+ratio,:) = Y;
[K,P,R] = size(Z);
M = 3; N = 4;
A = uint8(zeros(K*M,P*N,R));
for i = 1:M
    for j = 1:N
        A((i-1)*K+1:i*K,(j-1)*P+1:j*P,:) = Z;
    end
end
imshow(A)

img