Поскольку вы можете указать, хотите ли вы, чтобы был обнаружен поиск по горизонтали или по вертикали (отметьте here), вы можете выполнить 2 операции фильтрации (один горизонтальный и другой вертикальный) и сохранить каждое результирующее изображение, а затем объединить их, чтобы сформировать окончательный, 3 -каналы RGB-изображения.
Цветовой код RGB для желтого цвета - [1 1 0]
, а синий - [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)
Выход:
Привет Спасибо вам much.That работал perfectly.But, если сказать, что я извлек диагональный край также и участок с другой color.What должен Я делаю? – indu
Очень рад помочь! Чтобы отобразить другой набор ребер с другим цветом, вам нужно будет играть с красными, зелеными и синими каналами «FinalIm». Пожалуйста, посмотрите мой ответ в конце [этого] (http://stackoverflow.com/questions/27550252/change-color-of-a-specific-region-in-eye-image-matlab/27554155#27554155), в котором пользователь выбирает цвет для заполнения области. Эта же методика будет применяться для вас; в вашем текущем случае «маска» будет представлять собой вертикальные, горизонтальные и диагональные изображения края. –