使用sobel滤镜后如何着色边缘?

时间:2015-05-08 11:48:31

标签: matlab edge-detection sobel

我正在使用sobel滤波器进行边缘检测。如何用颜色编码说明梯度方向。例如,水平边缘的蓝色和垂直边缘为黄色?

谢谢。

1 个答案:

答案 0 :(得分:1)

由于您可以指定是否要检测水平或垂直边缘(检查here),您可以执行2个过滤操作(一个水平,另一个垂直)并保存每个结果图像,然后连接它们以形成一个最终的3通道RGB图像。

黄色的RGB颜色代码为[1 1 0],蓝色的RGB颜色代码为[0 0 1],因此在您的情况下,垂直边缘图像将占据前2个通道,而水平边缘图像将占据最后一个通道

示例:

clear
clc
close all

A = imread('circuit.tif');

[r,c,~] = size(A);

EdgeH = edge(A,'Sobel','Horizontal');
EdgeV = edge(A,'Sobel','Vertical');

%// Arrange the binary images to form a RGB color image.
FinalIm = zeros(r,c,3,'uint8');

FinalIm(:,:,1) = 255*EdgeV;
FinalIm(:,:,2) = 255*EdgeV;
FinalIm(:,:,3) = 255*EdgeH;

figure;

subplot(1,2,1)
imshow(A)

subplot(1,2,2)
imshow(FinalIm)

输出:

enter image description here