Ваш код выглядит нормально, вы можете убедиться, что границы корректно обрабатываются с помощью:
theimage(theimage<0) = 0;
theimage(theimage>255) = 255;
Но это не обязательно, обычно вы либо получаете двойное изображение в диапазоне [0,1], либо uint8 [0,255], когда читаете изображение с imread()
. При необходимости просто измените масштаб на [0,255].
Некоторые другие советы:
Вы можете сделать вектор-ребро следующим образом:
edges = 0:255;
И theimage(:)
- это то же самое, что и reshape(theimage,1,R*C)
в этом случае, так как вам нужен один длинный вектор.