xiaogang 发表于 2007-7-15 11:33

求助:关于二值图的还原问题?

我将一幅rgb的图象显示为了二值图,
我现在只想让二值图中1的部分(白色的部分)对应的原图显示出来,怎么弄
知道用循环函数能够解决,可就是不知道怎么编写,请各位版主帮忙:@(

花如月 发表于 2007-7-15 13:56

呵呵,我不是什么版主。试了以下,就这么点功力
clear all
I=imread('521.jpg');
X=rgb2gray(I);
BW=im2bw(X,0.8);
Tem=uint8(BW);
I1(:,:,1)=I(:,:,1).*Tem;
I1(:,:,2)=I(:,:,2).*Tem;
I1(:,:,3)=I(:,:,3).*Tem;
subplot(121),imshow(I),title('原图')
subplot(122),imshow(I1),title('处理后图')
对应二值图像的白色部分正常,黑色部分就用黑色显示了。可以根据你的需要改进,希望对你有所帮助。

xiaogang 发表于 2007-7-15 17:22

:victory:
谢谢!

dream007 发表于 2007-7-18 08:53

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

On line 6==> I1(:,:,1)=I(:,:,1).*Tem;
是怎么回事啊,我是新手

花如月 发表于 2007-7-18 09:14

class I看一下你图像矩阵的类型。I1(:,:,1)=I(:,:,1).*Tem;运算的时候要保证Tem和I类型相同才可以运算。这个程序在我电脑上完全没有问题,只是类型匹配的问题。不算什么大问题,自己动手调试下就可以了。

dream007 发表于 2007-7-18 09:50

两个的class 是一样的啊

花如月 发表于 2007-7-18 10:53

回复 #6 dream007 的帖子

你用的是什么版本?

dream007 发表于 2007-7-18 12:14

6.5.1

eight 发表于 2007-7-19 14:39

原帖由 dream007 于 2007-7-18 08:53 发表 http://www.chinavib.com/forum/images/common/back.gif
??? Error using ==> .*
Function '.*' is not defined for values of class 'uint8'.

On line 6==> I1(:,:,1)=I(:,:,1).*Tem;
是怎么回事啊,我是新手

自己调试一下看看哪个变量是 uint8 的,然后在该变量前面强制转换一下,即 double(A)
页: [1]
查看完整版本: 求助:关于二值图的还原问题?