使用索贝尔过滤器后如何给边缘着色?
How to colour the edges after using sobel filter?
我正在使用 sobel 滤波器进行边缘检测。如何用颜色编码来说明渐变方向。例如,蓝色的水平边缘和黄色的垂直边缘?
谢谢。
由于您可以指定是要检测水平边缘还是垂直边缘(选中 here),您可以执行 2 个过滤操作(一个水平和另一个垂直)并保存每个结果图像,然后将它们连接到形成最终的 3 通道 RGB 图像。
黄色的 RGB 颜色代码是 [1 1 0]
,蓝色的是 [0 0 1]
,因此在您的情况下,垂直边缘图像将占据前 2 个通道,而水平边缘图像将占据前 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)
输出:
我正在使用 sobel 滤波器进行边缘检测。如何用颜色编码来说明渐变方向。例如,蓝色的水平边缘和黄色的垂直边缘?
谢谢。
由于您可以指定是要检测水平边缘还是垂直边缘(选中 here),您可以执行 2 个过滤操作(一个水平和另一个垂直)并保存每个结果图像,然后将它们连接到形成最终的 3 通道 RGB 图像。
黄色的 RGB 颜色代码是 [1 1 0]
,蓝色的是 [0 0 1]
,因此在您的情况下,垂直边缘图像将占据前 2 个通道,而水平边缘图像将占据前 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)
输出: