Я хочу XOR для каждого бита изображения RGB после преобразования его в двоичный (в пиксельном цвете) с помощью функции dec2bin()
.Во-первых, я объявил массив scr(8)=0
, содержащий все нули, и теперь я хочу, чтобы, когда ar(1)=xor(scr(1),pic(1))
был сделан, он хранился в scr(8)=ar(1)
, scr(7)=scr(8)
, scr(8)=ar(1)
и так далее до конца,Я написал код, но это занимает много времени для обработки.Если вы знаете способ ускорить код, пожалуйста, помогите мне.Я застрял здесь и у меня впереди финальные презентации.
Это мой код:
pic=imread('peppers.png');
[imr,imc,clr]=size(pic);
scr(8)=0;
i=8;
img2=pic;
pic2(8)=0;
pic1(8)=0;
for row=1:imr;
for col=1:imc
for k=1:clr
img2(row,col,k)=bitxor(pic(row,col,k),66);
pic1=dec2bin(img2(row,col,k),8);
for n=1:8
pic2(n)=xor(pic1(n),scr(n));
if n==1
scr(i)=pic2(n);
end
if n==2
scr(i-1)=scr(i);
scr(i)=pic2(n);
end
if n==3
scr(i-2)=scr(i-1);
scr(i-1)=scr(i);
scr(i)=pic2(n);
end
if n==4
scr(i-3)=scr(i-2);
scr(i-2)=scr(i-1);
scr(i-1)=scr(i);
scr(i)=pic2(n);
end
if n==5
scr(i-4)=scr(i-3);
scr(i-3)=scr(i-2);
scr(i-2)=scr(i-1);
scr(i-1)=scr(i);
scr(i)=pic2(n);
end
if n==6
scr(i-5)=scr(i-4);
scr(i-4)=scr(i-3);
scr(i-3)=scr(i-2);
scr(i-2)=scr(i-1);
scr(i-1)=scr(i);
scr(i)=pic2(n);
end
if n==7
scr(i-6)=scr(i-5);
scr(i-5)=scr(i-4);
scr(i-4)=scr(i-3);
scr(i-3)=scr(i-2);
scr(i-2)=scr(i-1);
scr(i-1)=scr(i);
scr(i)=pic2(n);
end
if n==8
scr(i-7)=scr(i-6);
scr(i-6)=scr(i-5);
scr(i-5)=scr(i-4);
scr(i-4)=scr(i-3);
scr(i-3)=scr(i-2);
scr(i-2)=scr(i-1);
scr(i-1)=scr(i);
scr(i)=pic2(n);
end
end
pic3=int2str(pic2);
img2(row,col,k)=bin2dec(pic3);
end
end
end
imwrite(img2,'peppers2.png');
imshow('peppers2.png');