声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2082|回复: 8

[编程技巧] 关于图象原点矩的累加问题

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

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

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

x

                               
登录/注册后可看大图

我想请教一下如何实现这个式子

我自己这样编写的

[M N]=size(I1);
sumn=0;
summ=0;
for m=1:M,
    for n=1:N,
        sumn=sumn+m.^p.*n.^q.*I1(m,n);   
    end
    summ=summ+sumn;
end
m(p,q)=summ;
运行的时候总是报错说p q没有定义
可是我不知道该如何定义

麻烦大家帮忙看看
谢谢了

[ 本帖最后由 eight 于 2007-5-29 10:54 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-5-28 17:15 | 显示全部楼层
譬如p=2;q=3;
不用循环方式的完整代码如下:
[M N]=size(I1);
p=2;q=3;
[X,Y]=meshgrid(1:M,1:N);
Z=X.^p.*Y.^q.*I1;
m_pq=sum(Z(:));

评分

1

查看全部评分

 楼主| 发表于 2007-5-28 17:34 | 显示全部楼层
谢谢

因为在以后的计算中需要用到p q为任何值的时候的m_pq
所以我想是不是可以在不给p q赋具体值的情况下得出m_pq
然后在以后的运算中方便的调用p q为任何值的时候的m_pq
发表于 2007-5-28 17:38 | 显示全部楼层
原帖由 咿呀咿呀吆 于 2007-5-28 17:34 发表
谢谢

因为在以后的计算中需要用到p q为任何值的时候的m_pq
所以我想是不是可以在不给p q赋具体值的情况下得出m_pq
然后在以后的运算中方便的调用p q为任何值的时候的m_pq


建议做成函数,p、q作为输入
 楼主| 发表于 2007-5-28 17:48 | 显示全部楼层
原帖由 eight 于 2007-5-28 17:38 发表
建议做成函数,p、q作为输入


谢谢,我再想想看


另外
??? Error using ==> .*
Function '.*' is not defined for values of class 'uint8'.

这个报错是什么原因
我用的是二值图象
是不是图象类型的问题
发表于 2007-5-28 17:58 | 显示全部楼层
原帖由 咿呀咿呀吆 于 2007-5-28 17:48 发表


谢谢,我再想想看


另外
??? Error using ==> .*
Function '.*' is not defined for values of class 'uint8'.

这个报错是什么原因
我用的是二值图象
是不是图象类型的问题


数据不是 矩阵性质吧
 楼主| 发表于 2007-5-29 10:48 | 显示全部楼层
麻烦大家再帮我看看,我的程序是这样的:
data=('C:\Documents and Settings\Administrator\桌面\test12.jpg')
I1=imread(data);
level1=graythresh(I1);
A1=im2bw(I1,level1);
subplot(2,4,1),imshow(I1);
title('原图像');
subplot(2,4,5),imshow(A1);
title('原图像的二值图');
[M N]=size(I1);
p=0;q=0;
[X,Y]=meshgrid(1:M,1:N);   
Z=X.^p.*Y.^q.*I1;
m_00=sum(Z(:))

这个报错完全不懂
麻烦大家指点一下

??? Error using ==> .*
Function '.*' is not defined for values of class 'uint8'.
Error in ==> C:\MATLAB6p5\work\absent.m
On line 12 ==> Z=X.^p.*Y.^q.*I1;

处理的图片

处理的图片
发表于 2007-5-29 10:53 | 显示全部楼层
原帖由 咿呀咿呀吆 于 2007-5-29 10:48 发表
麻烦大家再帮我看看,我的程序是这样的:
data=('C:\Documents and Settings\Administrator\桌面\test12.jpg')
I1=imread(data);
level1=graythresh(I1);
A1=im2bw(I1,level1);
subplot(2,4,1),imshow(I1);
...


  1. I1 = double(I1);
  2. Z=X.^p.*Y.^q.*I1;
复制代码


试试吧,我这里电脑没有安装 matlab,所以不敢肯定,呵呵
 楼主| 发表于 2007-5-29 10:57 | 显示全部楼层
可以了 谢谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-6 03:45 , Processed in 0.073293 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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