使用MATLAB對數據進行位操作以及RGB圖片顯示


fd = fopen('video_test_pattern_avalon_generator_source_data.txt');              //打開像素源文件
A = fscanf(fd,'%d');   //讀入文件中的數據
fclose(fd);
%先申明向量用於存儲數據 B = zeros(224,224); C = zeros(224,224); R1 = zeros(50176,1); R2 = zeros(50176,1); R3 = zeros(224,224); G1 = zeros(50176,1); G2 = zeros(50176,1); G3 = zeros(224,224); B1 = zeros(50176,1); B2 = zeros(224,224);
for j = 1:224 for i = 1:224 B(j,i) = A((j-1)*224+i); end end
% 24-Bit RGB數據結構 % R---1111 1111 --- 0000 0000 --- 0000 0000 = 16711680 % G---0000 0000 --- 1111 1111 --- 0000 0000 = 65280 % B---0000 0000 --- 0000 0000 --- 1111 1111 = 255 %---R for i = 1:50176 R1(i) = bitand(A(i),16711680); //與操作,得到數據的高8位 end for i = 1:50176 R2(i) = bitshift(R1(i),-16); //移位操作,將數據向右移動16位 end for j = 1:224 for i = 1:224 R3(j,i) = R2((j-1)*224+i); //將數據還原成二維矩陣224X224格式 end end %---G for i = 1:50176 G1(i) = bitand(A(i),65280); end for i = 1:50176 G2(i) = bitshift(G1(i),-8); end for j = 1:224 for i = 1:224 G3(j,i) = G2((j-1)*224+i); end end %---B for i = 1:50176 B1(i) = bitand(A(i),255); end for j = 1:224 for i = 1:224 B2(j,i) = B1((j-1)*224+i); end end %---display image(:,:,1) = R3; //將RGB源信息存在3維數組中 image(:,:,2) = G3; image(:,:,3) = B2; imshow(uint8(image)); //將3維數組信息轉化為uint8格式,並顯示成圖片

Matlab位運算函數:

 

例子:

a = 60; % 60 = 0011 1100   
b = 13; % 13 = 0000 1101 
c = bitand(a, b)      % 12 = 0000 1100  
c = bitor(a, b)       % 61 = 0011 1101 
c = bitxor(a, b)      % 49 = 0011 0001 
c = bitshift(a, 2)    % 240 = 1111 0000 */
c = bitshift(a,-2)    % 15 = 0000 1111 */

運行結果:

c =
    12
c =
    61
c =
    49
c =
   240
c =
    15

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM