图像处理&生成图像的共生矩阵——Matlab实现

图像处理&生成图像的共生矩阵——Matlab实现

%求解图像的共生矩阵
clc;clear;
a=input('输入图像矩阵:','s');
a=str2num(a);   %将输入的矩阵转换成数
[m,n]=size(a);
b=max(max(a));  
c=zeros(b+1);
angle=input('输入旋转角度(如“45”“90”格式输入)','s');
angle=str2num(angle);   
switch(angle)
  %顺时针旋转,当角度为0度时,图像的共生矩阵
    case 0
   for k=0:b
    for h=0:b
        x=0;
        for i=1:m
            for j=1:n-1
                if((a(i,j)==k)&&(a(i,j+1)==h))&&((a(i,j)==h)&&(a(i,j+1)==k))%判断0度时,原矩阵两个值是否相同且等于共生矩阵相应位置的数
                    x=x+2;
                elseif ((a(i,j)==k)&&(a(i,j+1)==h))%判断0度时,原矩阵的两个值是否等于共生矩阵相应位置的值
                    x=x+1;
                elseif ((a(i,j)==h)&&(a(i,j+1)==k))%判断180度时,原矩阵的两个值是否等于共生矩阵相应位置的值
                    x=x+1;
                end
            end
        end
           c(k+1,h+1)=x;
    end
   end
   disp('旋转角度为0度时,图像的共生矩阵');disp(c);

 %顺时针旋转,当角度为45度时,图像的共生矩阵
    case 45
     for k=0:b
    for h=0:b
        x=0;
        for i=1:m-1
            for j=1:n-1
                if((a(i,j)==k)&&(a(i+1,j+1)==h))&&((a(i,j)==h)&&(a(i+1,j+1)==k))
                    x=x+2;
                elseif ((a(i,j)==k)&&(a(i+1,j+1)==h))
                    x=x+1;
                elseif ((a(i,j)==h)&&(a(i+1,j+1)==k))
                    x=x+1;
                end
            end
        end
           c(k+1,h+1)=x;
    end
     end
   disp('旋转角度为45度时,图像的共生矩阵');disp(c);

  %顺时针旋转,当角度为90度时,图像的共生矩阵
    case 90
         for k=0:b
    for h=0:b
        x=0;
        for i=1:m-1
            for j=1:n
                if((a(i,j)==k)&&(a(i+1,j)==h))&&((a(i,j)==h)&&(a(i+1,j)==k))
                    x=x+2;
                elseif ((a(i,j)==k)&&(a(i+1,j)==h))
                    x=x+1;
                elseif ((a(i,j)==h)&&(a(i+1,j)==k))
                    x=x+1;
                end
            end
        end
           c(k+1,h+1)=x;
    end
         end
        disp('旋转角度为90度时,图像的共生矩阵');disp(c);

     %顺时针旋转,当角度为135度时,图像的共生矩阵
    case 135
         for k=0:b
    for h=0:b
        x=0;
        for i=1:m-1
            for j=2:n
                if((a(i,j)==k)&&(a(i+1,j-1)==h))&&((a(i,j)==h)&&(a(i+1,j-1)==k))
                    x=x+2;
                elseif ((a(i,j)==k)&&(a(i+1,j-1)==h))
                    x=x+1;
                elseif ((a(i,j)==h)&&(a(i+1,j-1)==k))
                    x=x+1;
                end
            end
        end
           c(k+1,h+1)=x;
    end
         end
     disp('旋转角度为135度时,图像的共生矩阵');disp(c);
    otherwise
        fprintf(2,'输入角度有误\n');
      end

小白练手,敬请斧正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值