用matlab實現二值化圖像的一個問題

用matlab實現二值化圖像和原圖相乘?急用啊!!!!木有財富值了 求幫助呢!!

2014-08-18 19:38心不死即可 | 瀏覽 963 次
對於jpg格式的圖像,和進行了二值化的圖像進行相乘?怎麼不行啊下面是程序和錯誤警告?請大神幫幫忙啊   時間不夠了..沒有財富值了,,欠着可以不。。。
A=imread('26.jpg');%讀取原圖像
B=rgb2gray(A);%將原圖像轉換爲灰度圖像
t=graythresh(B);%計算閾值t
C=im2bw(B,t);%根據閾值二值化圖像
D=imfill(C,8,'holes');%對二值化後的圖像填充肺實質
E=D-C;%得到肺實質的圖像E
F=imfill(E,8,'holes');%填充肺實質空洞
G=B.*F;
imshow(A);figure,imshow(G);
 
警告:
??? Error using ==> times
Integers can only be combined with integers of the same class, or scalar doubles.
Error in ==> Untitled15 at 8
G=B.*F;



        
    
A=imread('26.jpg');%讀取原圖像
B=rgb2gray(A);%將原圖像轉換爲灰度圖像
t=graythresh(B);%計算閾值t
C=im2bw(B,t);%根據閾值二值化圖像
D=imfill(C,8,'holes');%對二值化後的圖像填充肺實質
E=D-C;%得到肺實質的圖像E
F=imfill(E,8,'holes');%填充肺實質空洞

B=double(B);  %%%%%%%%%%%%%%%注意這個地方,必須換成double類型

G=B.*F;
imshow(A);figure,imshow(G);
追問:
恩恩 可以了 不過爲什麼感覺G和F一樣呢?
追答:
這個我就不太明白了,我只知道你的錯誤原因是由於 乘法時類型不一致引起的,並且在進行圖像處理時我們通常就要進行 double 的轉換。  

1:爲什麼 G F一樣,是由於你用二值化矩陣乘以圖像矩陣當然結果就是二值化圖像了
追問:
不是矩陣對應元素相乘  然後二值化的白色是1  黑色是0  那麼得到的應該是把原圖像  我所需要的那個目標分離的部分啊?怎麼回事二值化的圖像呢??不太理解
追答:
對不起,剛纔那個理解錯了,“二值化矩陣乘以圖像矩陣當然結果就是二值化圖像了”
追問:
恩恩??什麼意思啊  我沒有財富值了 不能追問了  不能理解二值化矩陣乘以圖像舉證結果是二值化圖像  這句話
追答:
對不起,剛纔那個理解錯了

出來的結果是個灰度矩陣。但是其餘地方是黑色的,
你給我發張圖,我給你看結果!
追問:

  這個是原圖片我就是使用上面的程序對它進行處理的  萬謝啊!!

追答:

A=imread('29.jpg');%讀取原圖像

BB=rgb2gray(A);%將原圖像轉換爲灰度圖像

B= im2double(BB);

t=graythresh(B);%計算閾值t

C=im2bw(B,t);%根據閾值二值化圖像

D=imfill(C,8,'holes');%對二值化後的圖像填充肺實質

E=D-C;%得到肺實質的圖像E



F=imfill(E,8,'holes');%填充肺實質空洞


G=B.*F;

imshow(A);figure,imshow(G);


這個是程序,你看看,第二張圖就滿足你的要求了,不過背景是黑色的而已。你可以把背景搞成白色的,不過有些噪聲,建議你再濾波一下

提問者評價
謝謝!! 真的幫了我們大忙了!!
發佈了21 篇原創文章 · 獲贊 55 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章