noise removal from the part of the medical image where noise is actually present, not the whole image
21 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
syeda musfia
am 18 Okt. 2017
Kommentiert: Image Analyst
am 20 Okt. 2017
i am doing one algorithm where i need to remove noise from an image , but i cant apply any kind of filter or any noise removal algorithm directly to the whole image since i am working in medical image and it might blur or might take any tissue or connected organ as a noise and remove it and will change my output. i would like to know the best possible way to remove noise from only those parts of the image where noise actually exists. thank you..
2 Kommentare
Akzeptierte Antwort
Bjorn Gustavsson
am 18 Okt. 2017
If you know what regions of the images you have noise that needs filtering why not just filter those regions? Something like this (one-region example):
regN = [i11,i12,i21,i22]; % corners of noisy region
ImgN = Im_full((regN(1)-1):(regN(2)+1),(regN(3)-1):(regN(4)+1)); Will break down for regions that extends to image edges, fix to suit needs
ImgN = wiener2(ImgN,[3,3]); % Or whatever filtering suits your images
Im_full(regN(1):regN(2),regN(3):regN(4)) = ImgN(2:end-1,2:end-1);
To me it sounds strange that you need to reduce noise in what seems to be "medically uninteresting" parts of images, while the parts of the images with organs and tissue should be left unfiltered with noise intact. Why not simply tell the doctors that the noisy parts of the images are left noisy to make them aware of the general noise characteristics of the images, that should be information that should help image interpretation.
HTH
7 Kommentare
learningmat
am 20 Okt. 2017
thank you for the reply sir..but i want to reduce the complexity so i dont want to apply the filtering to whole image, i want to apply to only the noisy part. Actually i can apply it for noisy part alone but how to indexing it in an array and replacing it with noisy part
Image Analyst
am 20 Okt. 2017
Again, SEE MY ANSWER where I already told you how.
Weitere Antworten (2)
Kian Azami
am 18 Okt. 2017
Bearbeitet: Kian Azami
am 18 Okt. 2017
close all
% Read the
I = imread('input.jpg');
% Remove noise
se1 = strel('disk',1);
I1 = imclose(I, se1);
se2 = strel('disk',2)
I2 = imopen(I1, se2);
% Original Image
figure
imshow(I)
% Image after noise
figure
imshow(I2)
Basically, imopen(I,se1) will remove the pixels that are left alone.
Then, imclose(I1,se2) will do the opposite. It will unite the pixels with the same color.
se1 and se2 are the structures that tell imopen and imclose how to remove or unite the pixels.
By the command 'strel' you define the zone by which you can remove or unite the pixels. For example, strel('disk',2) is a disk like zone with a dimension of 2. So, when you apply this structure in your image by 'imopen' it will divide the image into disk like shapes with the dimension of 2 and if it see discontinuity with the picture colors it will remove the pixels in that zone which is possibly a noise. You can play with the dimensions and see the change in your image.
You can define many different kinds of strel and if you go to help you can see them: strel Documentation
0 Kommentare
Image Analyst
am 18 Okt. 2017
I agree with Bjorn - the radiologist will be able to mentally filter out the noisy areas.
If you still want to do it for some reason, then you'll have to find a mask for identifying the noisy areas (for example use stdfilt() but exclude edge regions), then remove noise for the entire image, and replace the noise pixels with noise free pixels.
mask = some algorithm to identify noisy regions.
noiseFreeImage = ReduceNoise(grayImage); % Remove noise over the entire image.
noiseReducedImage = grayImage; % Initialize.
% Replace pixels in noise region with noise-free pixels.
noiseReducedImage (mask) = noiseFreeImage(mask);
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!