首页 文章

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

提问于
浏览
0

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

谢谢 .

1 回答

  • 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

相关问题