0
我想通過dec2bin()
函數將RGB圖像的每一位轉換爲二進制(像素顏色方式)後對其進行XOR運算。首先,我聲明數組scr(8)=0
,包含所有零,現在我想那是什麼時候ar(1)=xor(scr(1),pic(1))
完成後,應貯存在scr(8)=ar(1)
,scr(7)=scr(8)
,scr(8)=ar(1)
依此類推,直到最後, 我寫的代碼,但它需要很多的時間來處理。 如果您知道加速代碼的方法,請幫助我。我卡在這裏,並有最終的演示。實現左移,同時對RGB圖像的每種顏色進行異或運算的快速算法
這是我的代碼:
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');