?? 第3.4.2節中的代碼.txt
字號:
?
I = imread('bag.png');%讀入系統自帶的圖片bag.png
figure, imshow(I);%創建圖形窗口,在窗口中顯示讀入的圖像
E = entropyfilt(I);
Eim = mat2gray(E);
imshow(Eim);%
BW1 = im2bw(Eim, .8);
imshow(BW1);%
figure, imshow(I);%創建新圖形窗口
BWao = bwareaopen(BW1,2000);%這里可以看到BWao是BW+area+open的縮寫
imshow(BWao); %
nhood = true(9);
closeBWao = imclose(BWao,nhood);%對前面的開啟運算得到的圖像再進行閉合運算
imshow(closeBWao)%
roughMask = imfill(closeBWao,'holes');%填充孔洞
imshow(roughMask);
figure, imshow(I);
I2 = I;
I2(roughMask) = 0;%圖像透過遮罩,遮罩圖像黑色部分可以透過去,白色部分透不過
imshow(I2);
E2 = entropyfilt(I2);
E2im = mat2gray(E2);% 將矩陣轉換成灰度圖像
imshow(E2im);
BW2 = im2bw(E2im,graythresh(E2im));
imshow(BW2)
figure, imshow(I);
mask2 = bwareaopen(BW2,1000);
imshow(mask2);
texture1 = I;%將圖像I復制為texture1
texture1(~mask2) = 0;%這里有個運算符號~,邏輯非,作用是將mask2黑白顛倒
texture2 = I;%將圖像I復制為texture2
texture2(mask2) = 0;
%在MATLAB中,~A代表“取邏輯非”的意思。但是實際上其意義要比通常的取邏輯非稍微廣泛一點。
%假如A = 1,那么 ~A = 0;
%假如A = [0 1] ,那么 ~A = [1 0];
%假如A = [0 0 0],那么 ~A= [1 1 1];
%但是假如A= [3 4 5],那么 ~A = [0,0,0]。可見~A有那么一點“廣義的邏輯非”的意思。
imshow(texture1);
figure, imshow(texture2);
boundary = bwperim(mask2);%生成邊界線
%BWPERIM函數能夠起到探測灰度圖象內部物體周邊緣的作用,返回一幅相同尺寸的二值圖象。
segmentResults = I;
segmentResults(boundary) = 255;%設置邊界線顏色為白色
imshow(segmentResults);%
S = stdfilt(I,nhood);
imshow(mat2gray(S));
R = rangefilt(I,ones(5));
% rangefilt 函數句法為J = rangefilt(I, NHOOD),對輸入圖像I做距離濾波,由NHOOD指定領域
imshow(R);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -