How to do 2D Image Processing?

10 Ansichten (letzte 30 Tage)
Joshua
Joshua am 20 Feb. 2026 um 6:17
Bearbeitet: Image Analyst vor etwa 22 Stunden
Example
  2 Kommentare
Joshua
Joshua vor 4 Minuten
%% =========================
% [3.1] Load and display image
% =========================
imOriginal = imread("Section3.png");
figure;
imshow(imOriginal);
title("Original MRI Image");
% If image is RGB, convert to grayscale (usually this file is already grayscale)
if ndims(imOriginal) == 3
imOriginal = rgb2gray(imOriginal);
end
%% =========================
% [3.1] Remove salt-and-pepper noise using median filter
% =========================
imMed = medfilt2(imOriginal); % 2D median filter
figure;
imshowpair(imOriginal, imMed, "montage", "scaling", "none");
title("Original (left) vs Median Filtered (right)");
%% =========================
% [3.1] Compare with averaging filter (why median works better for S&P noise)
% =========================
avgFilt = (1/9) * ones(3,3);
% filter2 returns double, so cast back for display if needed
imAvg = filter2(avgFilt, imOriginal);
imAvg = uint8(imAvg);
figure;
imshowpair(imOriginal, imAvg, "montage", "scaling", "none");
title("Original (left) vs Averaging Filter (right)");
%% =========================
% [3.1] Histogram of median-filtered image
% Lab says use median-filtered output for intensity analysis
% =========================
figure;
imhist(imMed);
title("Histogram of Median-Filtered Image");
%% =========================
% [3.1] Create logical mask for NON-background pixels
% Black background pixel value = 0 (for uint8 grayscale)
% =========================
logicArr = (imMed ~= 0); % 1 = non-background, 0 = black background
%% =========================
% [3.1] Contrast adjustment using ONLY non-background pixels
% Steps:
% 1) extract non-background pixels
% 2) compute intensity limits from those pixels
% 3) use imadjust on the whole image with those limits
% =========================
nonBgPixels = imMed(logicArr);
% Simple version (directly from image values)
inLow = double(min(nonBgPixels)) / 255;
inHigh = double(max(nonBgPixels)) / 255;
% Optional better version (more robust to outliers):
% pr = prctile(nonBgPixels, [1 99]);
% inLow = double(pr(1))/255;
% inHigh = double(pr(2))/255;
% Contrast-adjust image
imAdj = imadjust(imMed, [inLow inHigh], []);
%% Histogram after adjustment (should use more of the intensity range)
figure;
imhist(imAdj);
title("Histogram After Contrast Adjustment");
%% =========================
% [3.1] Final comparison: original vs median-filtered + contrast-adjusted
% =========================
figure;
imshowpair(imOriginal, imAdj, "montage", "scaling", "none");
title("Original (left) vs Median Filtered + Contrast Adjusted (right)");
Mathieu NOE
Mathieu NOE vor etwa 2 Stunden
again, what is your question ?

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Image Analyst
Image Analyst vor etwa 2 Stunden
Bearbeitet: Image Analyst vor etwa 2 Stunden
For some examples, see my File Exchange:
especially the Image Segmentation Tutorial submission.
And see my attached salt and pepper noise removal demos.

Community Treasure Hunt

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

Start Hunting!

Translated by