morningwqc 发表于 2009-5-21 22:00

求助,急急急 ,关于MATLAB求面积的

MATLAB求图形面积的命令是什么啊???跪求了。。。
书上说   BW=imread('123.jpg')
               area=bwarea(BW)

可是为什么我输了总是说错误呢出现红色的
??? Subscripted assignment dimension mismatch.
Error in ==> bwarea at 40
bb(2:end-1,2:end-1) = b;
真的很着急,,哪位大侠救救我吧 。。。。。

xiezhh 发表于 2009-5-21 22:04

bwarea函数是求二值图像中前景图像的面积,你的图像不是二值图像,是真彩图像吧,应该先转为二值图像。

morningwqc 发表于 2009-5-21 22:08

是二值图象,背景是黑色的,图形是白色的。
求白色部分的面积。。。

xiezhh 发表于 2009-5-21 22:12

背景是黑色的,图形是白色的图像不一定就是二值图像,你用size(BW)看看BW是几维的。
你的错误我在底下验证过。

morningwqc 发表于 2009-5-21 22:24

多谢, 果然是这个问题,这图象我原先换成了二值图像后来保存了JPG格式的,
重新载入进去了就忘了再换了,现在可以了。亲你一口,真的非常感谢!!!!!!:kiss:

额。。。。
可是结果求出来是area=bwarea(I3)
area =5.5536e+003
那这个e和003是代表什么意思呢??

[ 本帖最后由 ChaChing 于 2009-5-23 12:39 编辑 ]

xiezhh 发表于 2009-5-21 22:28

受不了啦,5.5536e+003就是5.5536乘以10的三次方

morningwqc 发表于 2009-5-21 22:39

额。。。还有这样的说法,实在不好意思,功力不到家。。。呵呵。。

问题又来了555555555
作填充操作的时候怎么把1和0变一下啊 ?
填充完了发现本来黑的变成白的了,本意是想把白的里面那些黑点点填成白色的的。。。
还有就是求周长的命令是什么啊 ??

[ 本帖最后由 ChaChing 于 2009-5-23 12:40 编辑 ]

xiezhh 发表于 2009-5-21 22:59

把图像从中间分成两半,分别填充应该能满足要求,
求周长用regionprops函数

morningwqc 发表于 2009-5-21 23:09

不会,可不可以直接告诉我命令 ??我真太笨了。。。

xiezhh 发表于 2009-5-21 23:21

给你一个例子吧,附件中是一幅CT图像,骨骼中有孔洞,运行下面代码,提取骨骼,填补骨骼中孔洞,求骨骼外边缘周长I = imread('ct019.JPG');
BW = im2bw(I,0.3);
= size(BW);
figure(1)
imshow(BW)
= find(BW);%提取图像坐标
nxx = min(xbb);%图像上最左边点的横坐标
meanxx = round(mean(find(xbb==nxx)));
nbb = ybb(meanxx);%图像上最左边点的纵坐标
%填充内外边界的内部
BW(1:nbb,1:n) = bwfill(BW(1:nbb,1:n),'holes');
BW(nbb+1:m,1:n) = bwfill(BW(nbb+1:m,1:n),'holes');
%二值图像标注
L = bwlabel(BW);
%求周长
Perimeter = regionprops(L,'Perimeter')
figure(2)
imshow(BW)

[ 本帖最后由 ChaChing 于 2009-5-23 12:46 编辑 ]

morningwqc 发表于 2009-5-21 23:37

看是差不多能看懂了,不过跟我的问题有点出入,我就不知道该怎么取舍了。你看看我的图吧,我就是想把白色里面那点黑色也填白了,变成整个的白色封闭的区域。

morningwqc 发表于 2009-5-21 23:45

我按你的命令试了,效果很好,十二万分的感谢,总之太谢谢你了。。。

可是求周长的结果是
Perimeter =

2x1 struct array with fields:
    Perimeter

这该怎么理解?

[ 本帖最后由 ChaChing 于 2009-5-23 12:49 编辑 ]

xiezhh 发表于 2009-5-22 07:55

你为什么不好好看看regionprops的用法呢,当你的二值图像中有p个孤立的连通区域时,求出的周长
Perimeter =
px1 struct array with fields:

我看你的图片没必要分成两半填充,另外你可以用bwareaopen函数去除干扰点,然后再求周长,具体用法自己查一下帮助吧,我只能给你说一个大方向,不可能具体到给你编每一个程序,望理解。

morningwqc 发表于 2009-5-24 19:02

怎么换了个图就不行了?
填充完了中间还是黑的。。。
说实话吧,我接触MATLAB还不到一个星期,还是没老师,自己看书学,根本啥都不懂。。。

morningwqc 发表于 2009-5-25 00:18

为什么有的图可以把里面的黑空都填上,有的图却只能填掉一点点呢??
页: [1]
查看完整版本: 求助,急急急 ,关于MATLAB求面积的