I'm trying to implement hough transform for lines in matlab. And I have been struggling with this for days, I don't know why my code isn't working the way it should. Yes, it is part of the homework, but please help me out, because I totally gave up.

Input paramaters: Ie - logical "edge" image (0 means not an edge, 1 means edge).

```
function [out_ro, out_theta]=houghTransform(Ie,nBinsRo,nBinsTheta,tresh)

A = zeros(nBinsRo, nBinsTheta);

theta = 1:nBinsTheta;

theta = scale(theta, nBinsTheta, 1, (pi / 2), - (pi / 2));

D = size(diag(Ie));

D = D(1);

ro = 1:nBinsRo;

ro = scale(ro, nBinsRo, 1, D, -D);

len = size(Ie);

%checks all edges

for i = 1:len(1)

for j = 1:len(2)

    %if it is an edge

    if ((Ie(i,j) == 1))

        %generate all functions x cos(theta) + y sin(theta) = ro
        for m=1:nBinsTheta

            roVal = i * cos(theta(m)) + j * sin(theta(m));

            idx = scale2(roVal, D, -D, nBinsRo, 1);

            if (idx > 0 && idx < nBinsRo)

                A(idx, m) = A(idx, m) + 1;

            end

        end

    end

end

end

figure(1);
clf;
imagesc(A)

% -------------------------------------------------- %

function idx = scale(val, max_val_in, min_val_in, max_val_out, min_val_out)

skalirni_faktor = (max_val_out - min_val_out) / (max_val_in - min_val_in) ;

idx = min_val_out + (val-min_val_in) .* skalirni_faktor;

% -------------------------------------------------- %

function idx = scale2(val, max_val_in, min_val_in, max_val_out, min_val_out)

skalirni_faktor = (max_val_out - min_val_out) / (max_val_in - min_val_in) ;

idx = min_val_out + round((val-min_val_in) .* skalirni_faktor);

```

Thank you very much for your time and answers.