Why does dilate and erode images produce black images?

조회 수: 14 (최근 30일)
Matthew Worker
Matthew Worker 2021년 11월 18일
편집: John Kelly 2021년 12월 8일
Did i do something wrong with nhood variable?
%% 1. Dilation and Erosion
%a. Apply dilation and erosion to “lung.jpg” using 3x3 structuring element (all pixel value is 1).
%Before applying dilation and erosion you must perform the thersholding to make the input image into binary one (threshold = 128).
lung = imread('lung.jpg');
bilung = imbinarize(lung,128);
nhood = strel(ones(3,3));
dilatedlung = imdilate(bilung,nhood);
erodedlung = imerode(bilung,nhood);
%b. Display original image, dilation image and erosion image within the same figure.
figure
subplot(1,3,1);
imshow(lung);
title('original img');
subplot(1,3,2);
imshow(mat2gray(dilatedlung));
title('dilated img');
subplot(1,3,3);
imshow(mat2gray(erodedlung));
title('eroded img');
%c. Get morphological gradient of “lung.jpg” and display it.
basic_gradient = dilatedlung - erodedlung;
figure
imshow(basic_gradient);
title('gradient');

답변 (2개)

Image Analyst
Image Analyst 2021년 11월 18일
Try
basic_gradient = imabsdiff(dilatedlung, erodedlung);

Image Analyst
Image Analyst 2021년 11월 18일
You didn't use imbinarize correctly. Get rid of the 128.
%b. Display original image, dilation image and erosion image within the same figure.
figure
subplot(1,3,1);
imshow(lung);
title('original img');
subplot(1,3,2);
imshow(mat2gray(dilatedlung));
title('dilated img');
subplot(1,3,3);
imshow(mat2gray(erodedlung));
title('eroded img');
%c. Get morphological gradient of “lung.jpg” and display it.
basic_gradient = imabsdiff(dilatedlung , erodedlung);
figure
imshow(basic_gradient);
title('gradient');

카테고리

Help CenterFile Exchange에서 Read, Write, and Modify Image에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by