Undefined function or variable
Show older comments
In the Hough Transform section line 49 i get the error Undefined function or variable 'BW'. How can i solve this?
f=figure;
imshow('resim1.jpg');
[x, y] = getpts(f);
line (x(1)*ones(2,1),[-1000,1000],'Color', 'black', 'LineWidth', 6);
line (x(2)*ones(2,1),[-1000,1000],'Color', 'black', 'LineWidth', 6);
F = getframe(gcf);
I = frame2im(F);
I3=rgb2gray(I);
imshow(I3);
%Sobel filtre
% Read Input Image
f = I3
imshow(I3);
% Displaying Input Image
f = uint8(f);
figure, imshow(f); title('Input Image');
% Convert the image to double
f = double(f);
% Pre-allocate the filtered_image matrix with zeros
filtered_image = zeros(size(f));
% Sobel Operator Mask
Mx = [-1 0 1; -2 0 2; -1 0 1];
My = [-1 -2 -1; 0 0 0; 1 2 1];
for i = 1:size(f, 1) - 2
for j = 1:size(f, 2) - 2
% Gradient approximations
Gx = sum(sum(Mx.*f(i:i+2, j:j+2)));
Gy = sum(sum(My.*f(i:i+2, j:j+2)));
% Calculate magnitude of vector
filtered_image(i+1, j+1) = sqrt(Gx.^2 + Gy.^2);
end
end
% Displaying Filtered Image
filtered_image = uint8(filtered_image);
figure, imshow(filtered_image); title('Filtered Image');
%Hough Transform
[H,theta,rho] = hough(BW)
P = houghpeaks(H,35,'threshold',ceil(0.3*max(H(:))));
lines = houghlines(BW,T,R,P,'FillGap', 15, 'MinLength', 5);
figure, imshow(I,[]), hold on
max_len = 0;
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth', 2, 'Color', 'green');
plot(xy(1,1), xy(1,2),'x', 'LineWidth', 2,'Color', 'yellow');
plot(xy(2,1), xy(2,2),'x', 'LineWidth', 2,'Color', 'red');
len = norm(lines(k).point1 - lines(k).point2);
if ( len > max_len)
max_len = len;
xy_long = xy;
end
end
[lab,num]=bwlabel(BW);
[r,c]=find(lab==1);
[r1, c1] = find(lab==2);
D = pdist2 ([r c], [r1 c1], 'euclidean');
[r2, c2]=find(D==min(D(:)));
point_1=[r(r2) c(c2)];
point_2=[r1(c2) c1(c2)];
plot([point_1(2) point_2(2)], [point_1(1) point_2(1)], 'r')
hold off
distance=sqrt( (point_1(1)-point_2(1)).^2 + (point_1(2)-point_2(2)).^2)
Accepted Answer
More Answers (1)
Voss
on 26 Dec 2021
This error happens because there is no variable called 'BW' defined. Perhaps it should be:
[H,theta,rho] = hough(filtered_image)
Categories
Find more on Object Analysis in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!