2014-03-30 43 views
0

我已經創造了MATLAB函數返回一個形象:MATLAB函數返回的圖像

function [BW3] =lineAnalysis(BW1, O) 

BW2 = double(BW1 > 0); 
BW3 = BW2(2:end, :); % <-- REMOVE 1st LINE (ARTIFACT)! 


if O==0; % 1 for left 
    BW3 = fliplr(BW3); % <-- FLIP IT HERE! 
end 
BW3_orig = BW3; % <-- SAVE ORIGINAL VERSION 

% STEP 1 
n = 10; t = 0.9; 
c = 0:(n - 1); 
j0 = 1; 
while mean(mean(BW3(1 + c, j0 + c))) < t 
    j0 = j0 + 1; 
end 

% STEP 2 
i0 = 1; 
while mean(mean(BW3(i0 + c, 1 + c))) < t 
    i0 = i0 + 1; 
end 

% STEP 3 
a = (1 - j0)/(i0 - 1); 
b = j0 - a; 
for i = 1:i0 
    for j = 1:round(a * i + b) 
     BW3(i, j) = 0; 
    end 
end 

% STEP 4 
w = 20; 
for i = 1:round(i0 - w/a) 
    for j = max(1, round(a * i + b + 1)):round(a * i + b + w) 
     BW3(i, j) = 1; 
    end 
end 

% PLOT RESULT 
[BW3] = size(BW3); 

[nr, nc] = size(BW3); 
    % figure 

subplot(122), imagesc(BW3), colormap(gray) 
axis equal off, axis([1, nc, 1, nr]), title('Corrected') 

這完美的作品。

但是我想在我的主程序中返回結果而不是執行 imshow(BW3);

內的函數。

我也試着這樣做:

[BW3]=lineAnalysis(P, O); 

然後我試圖做

imshow(BW3); 

然而,這不工作時,我表明這樣的圖像來顯示圖像。它只是插入一個黑色圖像和一個白色圖像。

誰能告訴我如何解決這個問題?

謝謝:)

回答

2

的問題是靠近你的代碼的末尾:

function [BW3] =lineAnalysis(BW1, O) 

    %% your calculations here 

    % PLOT RESULT 
    [BW3] = size(BW3); 

    imshow(BW3); 

[BW3] = size(BW3);您正在使用具有行數和列數2元素矢量替換圖像行你的形象。

+0

這也沒用!它只是顯示一個白色的圖像。我會將我的函數的代碼添加到問題,因爲我錯了一些 – user1853871

+0

@ user1853871是的,你最好粘貼你的代碼和確切的錯誤。你目前的解釋是不夠的,但我打賭它必須將你的圖像從邏輯或uint8變成雙重。 – carandraug

+0

@ user1853871它不能工作。如果它有效,那麼你在問題上粘貼的代碼與你正在運行的代碼不一樣。 – carandraug