2014-03-30 42 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