我有一个像这样的旋转图像:
我想要做的是找到图像的边缘。那就是我想找到这张图片中的红色边缘:
我试图找到第一个和最后一个非零元素,然后使用它们作为边缘的坐标。这很好(如果我真的可以让它工作)但它不可扩展,因为可能需要扩展红色边框以获得“更厚”的边框。基本上我正在尝试找到边框,因为我需要移动旋转图像边缘发生的效果,我需要摆脱它。如果有人能够指出我正确的方向(沿着边界框或类似的方向),我会非常感激!
修改 根据{{3}}的建议将我的编辑内容移至答案。
答案 0 :(得分:2)
我找到了一个合适的答案。从用户Parag的建议我二进制阈值图像(任何大于0)。然后我应用了Sobel边缘检测。这会创建一个带有图像边缘的二进制图像,然后根据需要使用形态膨胀来“扩展”边框。
我使用的代码:
I = imread('outputTest.jpg');
B = I;
B(B > 0) = 255;
BW = edge(B,'sobel');
SE = strel('rectangle', [5 5]);
BW = imdilate(BW,SE);
I2 = I;
I2(BW > 0) = 0;
由于Parag提到二值化图像并不是解决这个问题的最有效方法,但由于我看到它们之前形成图像的方式,我确信这对我的情况至少是足够的
答案 1 :(得分:0)
一种简单的方法是使用旋转角度计算旋转图像的角。