⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.m

📁 图象通信中的图像的数字化与统计特性
💻 M
字号:
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %             main 主程序 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 clear all;
 I1=imread('SATURN.bmp');              %读入原始图像
 figure,imshow(uint8(I1));title('original picture')

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %    分辨率改变 
 %    假设图像大小为SATURN.bmp(438×328)
 %    imgcolnumber  代表图形的长,即图像矩阵所有的列数-438
 %    imgrownumber  代表图像的高,即图像矩阵所有的行数-328
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 [imgrownumber, imgcolnumber]=size(I1)                %行和列的方向都是隔点降采样  
 for m=1:0.5*imgrownumber
    for n=1:0.5*imgcolnumber
        I2(m,n)=I1(2*m,2*n);    
    end
 end
 figure,imshow(uint8(I2)); title('low sample');            %显示降采样后得到的图像

 I3=imresize(I2,2,'nearest');                              %采用最近领域插值后的图像
 figure,imshow(uint8(I3)); title('nearest');

 I4=imresize(I2,2,'bilinear');                             %采用双线性插值后的图像
 figure,imshow(uint8(I4)); title('bilinear');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%    量化比特数改变
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
 quant_bit_number=4;                  %quant_bit_number代表几比特量化,如此处就表示为7比特量化。
 temp=pow2(8-quant_bit_number);       %如果编译器不支持pow2函数,则可以写成:temp=trunc(exp((8-n)*ln(2)));
 
  
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %    DFT ,不采用原始的形式DFT,直接采用快速算法fft
 %    fft和ifft    一维快速正逆傅立叶变换
 %    fft2和ifft2  二维快速正逆傅立叶变换
 %    fftn和ifftn  n 维快速正逆傅立叶变换
 %    由于频谱值范围从0到10的6次方或更高,所以要进行下面公式中取log的处理压缩处理
 %    否则,由于一个图中无法显示这么大的范围,图中看到的就只有一个亮点,亮点附近的
 %    细节(即低频)就难以看清。而这些恰恰是重要的。
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  h=fft2(I1);
 figure,imshow(log(abs(h)),[]), colormap(jet(64)), colorbar
 figure,imshow(log(abs(h)),[])
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %    DCT 和IDCT
 %    函数为dct2和idct2
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 J=dct2(I1);
figure, imshow(log(abs(J)),[]), colormap(jet(64)), colorbar
figure, imshow(log(abs(J)),[]);
%J(abs(J) < 10) = 0;
%K = idct2(J);
%imview(I1);
%imview(K,[0 255]);
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %  帧内统计特性
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %统计行的方向
 numberarray=0:1:255;
 for m=1:255
     numberarray(m+1)=0;
 end;
 zeronumber=0;
 for m=1:imgrownumber 
     for n=2:imgcolnumber
            dif=abs(I1(m,n)-I1(m,n-1)); 
        if(dif==0)
            temp=zeronumber;
            zeronumber=temp+1;
        else
            numberarray(dif)=numberarray(dif)+1;
        end;
     end;
 end;
 figure;plot(0,zeronumber,'r*');hold on;plot(numberarray,'g*');hold off;

 %统计列的方向
 %此段学生自己编写imgcolnumber
 numberarray=0:1:255;
 for m=1:255
     numberarray(m+1)=0;
 end;
 zeronumber=0;
 for n=1:imgcolnumber 
     for m=2:imgrownumber
            dif=abs(I1(m-1,n)-I1(m,n)); 
        if(dif==0)
            temp=zeronumber;
            zeronumber=temp+1;
        else
            numberarray(dif)=numberarray(dif)+1;
        end;
     end;
 end;
 figure;plot(0,zeronumber,'r*');hold on;plot(numberarray,'g*');hold off;
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %  帧间统计特性
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 I1=imread('claire1.bmp');
 figure,imshow(uint8(I1));title('第一帧图象');
 I2=imread('claire2.bmp');
 figure,imshow(uint8(I1));title('第二帧图象');
 [imgrownumber, imgcolnumber]=size(I1);
 numberarray=0:1:255;
 for m=1:255
     numberarray(m+1)=0;
 end;
 zeronumber=0;
 for m=1:imgrownumber 
     for n=1:imgcolnumber
            dif=abs(I1(m,n)-I2(m,n));
        if(dif==0)
            zeronumber=zeronumber+1;
        else
            numberarray(dif)=numberarray(dif)+1;
        end;
     end;
 end;
 figure;plot(0,zeronumber,'r*');hold on;plot(numberarray,'g*');hold off;
 
 
 
 
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -