Обнаружение границ с помощью масок Собеля в Matlab этот код не принимает указанную ниже строку

#matlab #image-processing

#matlab #обработка изображений

Вопрос:

Обнаружение границ с помощью масок Собеля в Matlab этот код не принимает указанную ниже строку

этот код выдает ошибку при res = maskx.* bwsquare;

я смотрел пошаговое руководство в Интернете, но все равно не принимал эту строку

 clear
clc
close all
origional = imread('q1jjy.png');
rubic = origional(:,1:500,:);

figure()
imshow(rubic)


bw= uint8((1/3)*(double(rubic(:,:,1)) double(rubic(:,:,2)) double(rubic(:,:,3))));
figure()
imshow(bw)

bwdbl = double(bw); 
figure()

maskx = [-1 -2 -1, 0 0 0, 1 2 1 ];
[r,c] = size(bw);
OUT = zeros(r-3, c-3);

for idx = 1:(r-3)
    for jdx = 1:(c-3)
        bwsquare = bwdbl(idx:(idx 2), jdx:(jdx 2));
        res = maskx.*bwsquare;
        OUT(idx,jdx)=sum(sum(res));
    end
end
Gx= OUT;
figure()
imshow(Gx)

masky = [-1 0 1; -2 0 2; -1 0 1];
for idx = 1:(r-3)
    for jdx = 1:(c-3)
        bwsquare = bwdbl(idx:(idx 2), jdx:(jdx 2));
        res = masky.*bwsquare;
        OUT(idx,jdx)=sum(sum(res));
    end
end

Gy = OUT;
figure()
imshow(Gy);

G = sqrt(Gxdbl.^2   Gydbl.^2);

figure()
imshow(G);
 

Комментарии:

1. Ваше определение maskx не кажется правильным. Попробуйте заменить , на ; , чтобы создать маску 3×3. Также было бы полезно, если бы вы опубликовали фактическое сообщение об ошибке, которое вы получили.

2. «он не принимает эту строку» не является полезной постановкой проблемы. Вы всегда должны копировать и вставлять полное сообщение об ошибке в свой вопрос.