声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1803|回复: 5

[编程技巧] 求助,灰度图像共生矩阵计算中出现的问题

[复制链接]
发表于 2007-3-9 16:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
程序是在这个论坛上找的,但是运行不对,我的图像是256级的灰度图像,在附件中。temp_m是100×100的unit8类型数据,经过im2double(temp_m)变换,代上graynum=256,dist=1,可以得出结果。但是结果是零矩阵,是怎么回事,还有程序中为什么for m=1:16
            for n=1:16-dist都是循环到16呢,我是新手,请教各位高手。谢谢了。
function [mat_temp]=compute(temp_m,graynum,dist)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:graynum
    for j=1:graynum
        matH(i,j)=0;matV(i,j)=0;matRD(i,j)=0;matLD(i,j)=0;
    end
end

double total;total=0;

       for m=1:16
            for n=1:16
              newimage(m,n)=ceil(temp_m(m,n)/(256/graynum));
            end
        end
        
        %%% 0
        for m=1:16
            for n=1:16-dist
                matH(newimage(m,n),newimage(m,n+dist))=matH(newimage(m,n),newimage(m,n+dist))+1;
                matH(newimage(m,n+dist),newimage(m,n))=matH(newimage(m,n+dist),newimage(m,n))+1;
            end
        end
           
        %%%%%%%%%%%%%%% 90
        for m=1:16-dist
            for n=1:16
                matV(newimage(m,n),newimage(m+dist,n))=matV(newimage(m,n),newimage(m+dist,n))+1;
                matV(newimage(m+dist,n),newimage(m,n))=matV(newimage(m+dist,n),newimage(m,n))+1;
            end
        end
        
        %%%%%%%%%%%%%%%%%%%   135

for m=1:16-dist
            for n=16-dist
                matLD(newimage(m,n),newimage(m+dist,n+dist))= matLD(newimage(m,n),newimage(m+dist,n+dist))+1;
                matLD(newimage(m+dist,n+dist),newimage(m,n))= matLD(newimage(m+dist,n+dist),newimage(m,n))+1;
            end
        end
        
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   45
        for m=dist:16
            for n=1:16-dist
                matRD(newimage(m,n),newimage(m-dist+1,n+dist))=matRD(newimage(m,n),newimage(m-dist+1,n+dist))+1;
                matRD(newimage(m-dist+1,n+dist),newimage(m,n))=matRD(newimage(m-dist+1,n+dist),newimage(m,n))+1;
            end
        end
        
         
       %%%%%%%%%%%%%%
            for m=1:graynum
                for n=1:graynum
                    total=total+matH(m,n);
                end
            end
        
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
          for m=1:graynum
                for n=1:graynum
                    mat_temp(m,n)=matH(m,n)/total;
                    mat_temp(m,n)=double(mat_temp(m,n));
                end
            end
            
            %%%%  over

[ 本帖最后由 wenyanzi 于 2007-3-9 17:12 编辑 ]

tuxiang.doc

26 KB, 下载次数: 17

回复
分享到:

使用道具 举报

 楼主| 发表于 2007-3-10 19:32 | 显示全部楼层
怎么没人理我啊,大家帮帮忙吧,谢谢了。
发表于 2007-3-10 19:48 | 显示全部楼层
double total;total=0;


语法错误了吧?你用的是matlab吧

[ 本帖最后由 eight 于 2007-3-10 19:49 编辑 ]
 楼主| 发表于 2007-3-10 19:57 | 显示全部楼层
是matlab 啊,怎么错了呢,还有16什么意思。谢谢
发表于 2007-3-10 20:09 | 显示全部楼层
原帖由 wenyanzi 于 2007-3-10 19:57 发表
是matlab 啊,怎么错了呢,还有16什么意思。谢谢



matlab不支持 double total; 这样的定义,你还是先看看最基础的语法吧。至于16那里,前面已经出错了,后面也没有意义。不过如果按照dist=1,n应该循环到15而已,不知道你那里是什么问题
 楼主| 发表于 2007-3-10 20:16 | 显示全部楼层
谢谢了,自己再看看吧
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-27 19:08 , Processed in 0.060083 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表