산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> MATLAB

MATLAB:모서리 감지를 위한 가우스 라플라시안 필터

가우시안 필터는 이미지 처리에서 이미지를 흐리게 하거나 매끄럽게 만드는 데 사용되는 선형 필터입니다. 필터의 모양을 정의하는 데 사용되는 가우스 함수의 이름을 따서 명명되었습니다. 가우시안 필터는 일반적으로 이미지의 노이즈와 세부 묘사를 줄여 추가 처리나 분석에 더 적합하게 만드는 데 사용됩니다.

LoG(Laplacian of Gaussian) 필터는 이미지 처리에 사용되는 널리 사용되는 이미지 향상 및 가장자리 감지 필터입니다. 가우시안 필터와 라플라시안 필터라는 두 가지 필터를 조합한 것입니다. 가우시안 필터는 이미지를 매끄럽게 하고 노이즈를 줄이는 데 사용되며 라플라시안 필터는 가장자리를 감지하는 데 사용됩니다.

가우시안 필터의 라플라시안은 이미지의 다양한 스케일에서 가장자리를 감지하는 데 유용합니다. 가우스 필터의 표준 편차를 변경하여 가장자리가 감지되는 규모를 제어할 수 있습니다. 표준 편차가 작을수록 더 미세한 세부 사항을 감지하고, 표준 편차가 클수록 더 넓은 특징을 감지합니다.

가우스 필터의 라플라시안에 대한 몇 가지 예를 살펴보겠습니다.

예제 1:fspecial() 함수 사용

fspecial() 함수는 가우시안 필터를 생성하는 데 사용되며, 이 가우시안의 라플라시안을 계산하여 LoG 필터를 생성합니다. 그러나 라플라시안 필터는 가우시안 필터가 double 유형일 것으로 예상합니다.

우리가 가지고 있는 코드는 다음과 같습니다 -

% Read the image
img = imread('peppers.jpg');
% Convert the image to grayscale
if size(img, 3) == 3
 img_gray = rgb2gray(img);
else
 img_gray = img;
end
% Create a Gaussian filter
sigma = 2; % Standard deviation of the Gaussian filter
hsize = 2 * ceil(3 * sigma) + 1; % Filter size
gaussian_filter = fspecial('gaussian', hsize, sigma);
% Create a Laplacian of Gaussian filter
log_filter = fspecial('log', hsize, sigma);
% Apply the LoG filter to the image
filtered_img = imfilter(double(img_gray), log_filter, 'conv', 'replicate');
% Display the original and filtered images
subplot(1, 2, 1);
imshow(img_gray);
title('Original Image');
subplot(1, 2, 2);
imshow(uint8(filtered_img));
title('Laplacian of Gaussian Filtered Image');

코드를 자세히 이해해 봅시다 -

img = imread('peppers.jpg');

여기서는 현재 디렉토리에서 'peppers.jpg' 이미지를 읽어서 img 변수에 저장합니다.

if size(img, 3) == 3
 img_gray = rgb2gray(img);
else
 img_gray = img;
end

이미지가 컬러(RGB 형식)인 경우 rgb2gray 함수를 사용하여 회색조로 변환됩니다. 회색조 이미지는 img_gray 변수에 저장됩니다. 이미지가 이미 회색조이면 그대로 저장됩니다.

sigma = 2; % Standard deviation of the Gaussian filter
hsize = 2 * ceil(3 * sigma) + 1; % Filter size
gaussian_filter = fspecial('gaussian', hsize, sigma);

위의 코드는 가우스 필터를 생성합니다. 여기서는 가우스 필터의 표준편차 시그마를 정의하고 표준편차를 기준으로 필터 크기 hsize를 계산합니다. 그런 다음 필터 유형으로 'gaussian'을 사용하는 fspecial 함수를 사용하여 가우스 필터를 생성합니다.

log_filter = fspecial('log', hsize, sigma);

필터 유형이 'log'인 fspecial 함수를 사용하여 가우스 라플라시안 필터를 생성합니다. 이 필터는 에지 검출에 사용되는 가우시안 필터의 라플라시안을 나타냅니다.

filtered_img = imfilter(double(img_gray), log_filter, 'conv', 'replicate');

여기서는 imfilter 함수를 사용하여 회색조 이미지 img_gray에 대한 가우스 라플라시안 필터를 적용합니다. 'conv' 옵션은 컨볼루션을 사용하여 필터를 적용해야 함을 지정하고 'replicate' 옵션은 필터링 중에 이미지 경계를 처리하는 방법을 지정합니다.

subplot(1, 2, 1);
imshow(img_gray);
title('Original Image');
subplot(1, 2, 2);
imshow(uint8(filtered_img));
title('Laplacian of Gaussian Filtered Image');

마지막으로 subplot, imshow 및 title 함수를 사용하여 원본 회색조 이미지와 필터링된 이미지를 나란히 표시합니다. 필터링된 이미지는 표시되기 전에 uint8 형식으로 변환됩니다.

코드가 실행될 때 우리가 얻는 출력은 다음과 같습니다 -

예 2:라플라시안 및 LoG 필터를 사용한 이미지 필터링

이 예에서는 입력 이미지 'peppers.jpg'에 두 개의 서로 다른 필터인 라플라시안 필터와 LoG(Laplacian of Gaussian) 필터를 적용하는 방법을 보여줍니다.

우리가 가지고 있는 코드는 다음과 같습니다 -

x=imread('peppers.jpg');
figure;
imshow(x);
title('Input Image');
figure;
h=fspecial('laplacian');
filtered_image=imfilter(x,h);
imshow(filtered_image);
title('Output of Laplacian Filter');
figure;
h=fspecial('log');
filtered_image=imfilter(x,h);
imshow(filtered_image);
title('Laplacian Gaussian Filter');

위의 예에서-

x = imread('peppers.jpg');
figure;
imshow(x);
title('Input Image');

이 코드는 'peppers.jpg' 이미지를 읽고 imshow 함수를 사용하여 표시합니다. title 함수는 이미지 그림에 제목을 추가합니다.

h = fspecial('laplacian');
filtered_image = imfilter(x, h);

여기서 Laplacian 필터는 'laplacian'을 필터 유형으로 사용하는 fspecial 함수를 사용하여 생성됩니다. 그런 다음 imfilter 함수를 사용하여 이 필터를 입력 이미지 x에 적용하여 필터링된 이미지filtered_image를 얻습니다.

figure;
imshow(filtered_image);
title('Output of Laplacian Filter');

이 코드는 라플라시안 필터에서 얻은 필터링된 이미지를 표시합니다. title 함수는 이미지 그림에 제목을 추가합니다.

h = fspecial('log');
filtered_image = imfilter(x, h);

라플라시안 필터와 유사하게 LoG 필터는 필터 유형이 'log'인 fspecial 함수를 사용하여 생성됩니다. 그런 다음 imfilter 함수를 사용하여 이 필터를 입력 이미지 x에 적용하여 필터링된 이미지filtered_image를 얻습니다.

imshow(filtered_image);
title('Laplacian of Gaussian Filter');

이 코드는 LoG 필터에서 얻은 필터링된 이미지를 표시합니다. title 함수는 이미지 그림에 제목을 추가합니다.

코드가 실행될 때 우리가 얻는 출력은 다음과 같습니다. -


MATLAB

  1. MATLAB - 대수학
  2. MATLAB - 의사 결정
  3. MATLAB - 배열
  4. MATLAB 2차원 역코사인 변환:주파수 데이터에서 이미지 복원
  5. MATLAB - 문자열
  6. MATLAB - 명령
  7. MATLAB - 콜론 표기법
  8. MATLAB - 변환
  9. MATLAB 가이드:효율적인 다항식 도함수 계산
  10. MATLAB - 기본 구문