Я должен разработать и внедрить адаптивный фильтр для удаления импульсных шумов из медицинских изображений! и я новичок в обработке изображений. и не знаю, как создать фильтр! Я проверил предопределенные фильтры ... они не то, что я хочу! , пожалуйста, помогите, это мой Б.С. проект!Как разработать и внедрить адаптивный фильтр для удаления импульсного шума?
ответ
Импульсный шум обычно обрабатывается с использованием фильтра median
.
Чтобы построить адаптивный фильтр, я бы использовал статистику, чтобы понять, есть ли что-то, чтобы сгладить внутри окна.
Я работал бы с изображением, используя окна.
В каждом окне я бы посмотрел медианное и среднее.
Если они находятся далеко друг от друга, я бы применил фильтр median
, в противном случае примените локальный фильтр LPF, чтобы ничего не делать.
Это просто ...
я нашел статью об этом, это код, я реализовал
function adaptive()
I = imread('1.png');
x = rgb2gray(I);
%%-------adding Noise-----------------------
disp('Noise density lies between 0 and 1');
disp(' ');
ND = input('Enter Noise Density [0.5] : ');
if isempty(ND)
ND = 0.5;
end
y=x;
Narr = rand(size(y));
N = Narr;
N(N>=ND)=0;
N1 = N;
N1 = N1(N1>0);
Imn=min(N1(:));
Imx=max(N1(:));
N=(((N-Imn).*(255-0))./(Imx-Imn));
y(Narr<ND) = N(Narr<ND);
y=double(y);
%%------noise detection------------------------
adj = imadjust(y);
L = max(adj);
[M,N] = size(y);
for i = 1:M
for j = 1:N
if y(i,j) == L(j)-1 || y(i,j) == 0
alpha(i,j) = 1; %%the value 1 presents the “noise pixel”
else
alpha(i,j) = 0; %%the value 0 presents the “noise-free pixel”.
end
end
end
K=0;
for i = 1:M
for j = 1:N
if alpha(i,j) == 1;
K=K+1; %%total number of the “noise pixel”, K.
end
end
end
n = K/(M*N); %%the ratio of the “noise pixels” to
%%the total number of pixels contained in the image
%%------noise elimination------------------------
%%R=1;
R = floor(0.5 * sqrt(7/(1-n)));
m = ones(size(y(:)));
for i = 1:M
for j = 1:N
if alpha(i,j) == 1 %% this is a noise pixel
nnum=0; %%noise number
while nnum <= 8
R = R+1; %% This will make the filter window 2pixels larger
clear tmp;
if i-R <= 0 || i+R >= M
while i-R <= 0
R=R-1;
end
while i+R >= M
R=R-1;
end
end
if j-R <= 0 || j+R >= N
while i-R <= 0
R=R-1;
end
while i+R >= M
R=R-1;
end
end
tmp = y(i-R:i+R , j-R:j+R); %% filter window
w = 2*R +1 ; %% Size of filter window
for s = 1:w
for p = 1:w
if tmp(s,p) == 0 || tmp(s,p) == L(j)-1
nnum=nnum+1; %%number of free noise pixels in the window
end
end
end
end
clear temp;
temp = y(i-R:i+R , j-R:j+R); %% filter window
S = sort(temp(:));
if S(1) < S(R+1) && S(R+1) < S(w) && 0 < S(R+1) && S(R+1) < L(j)
m(i,j) = S(R+1);
end
if S(1) >= S(R+1) || S(R+1) >= S(w) || S(R+1) == L(j) && S(R+1) == 0
t = y(i,j-1);
m(i,j) = t;
end
end
end
end
for i = 1:M
for j = 1:N
if alpha(i,j) == 0 %% the value of z(i,j) is copied directly as the value of y(i,j).
z = y(i,j);
else
z = m(i,j); %%the output value z(i,j) is equal to m(i,j).
end
end
end
imshow(x);
figure,imshow(y);
figure,imshow(z);
end
У меня была ошибка, пожалуйста, помогите!
ошибка: не хватает памяти. Введите HELP MEMORY для своих опций. Ошибка в адаптивной (строка 96) m (i, j) = t;
и
подстрочные индексы должны либо быть реальными положительными целыми числами или логические выражения. Ошибка в адаптивной (строка 73) tmp = y (i-R: i + R, j-R: j + R); %% фильтр
- 1. Добавление импульсного шума в изображении вручную
- 2. Обнаружение нечеткого импульсного шума в Matlab
- 3. Адаптивный фильтр без опорного сигнала?
- 4. Шумовой фильтр для удаления шума из входного аудиопотока в ios
- 5. Фильтр шума данных акселерометра
- 6. Как фильтровать массив для удаления неправильных значений (например, шума)?
- 7. Как применить адаптивный фильтр в Python
- 8. удаления шума в пространственных данных
- 9. Как применить формулу для удаления шума данных в R?
- 10. Как фильтровать данные для удаления шума в Matlab?
- 11. Как усреднить сигнал для удаления шума с помощью Python
- 12. Внедрить FIR-фильтр в Verilog
- 13. Библиотека для снижения шума?
- 14. Почему изображения становятся размытыми после удаления шума?
- 15. Адаптивный алгоритм фильтрации данных гироскопа
- 16. Как избежать эха и шума в javascript для webrtc
- 17. Внедрить фильтр Калмана, чтобы сгладить данные из deviceOrientation API
- 18. Обнаружение и удаление текст шума
- 19. Фильтрация потоковых данных для уменьшения шума, фильтр kalman C#
- 20. Использование Python для удаления paratext (или «шума») из txt-файлов
- 21. как разработать фильтр LeGall 5/3 для обратимого водяного знака?
- 22. Что обычно используется для удаления шума и гладких изображений в оттенках серого?
- 23. Функция импульсного отклика (новый)
- 24. Как разработать в Visual Studio 2008 и внедрить объект View View для .Net 2?
- 25. Генератор шумового шума
- 26. Фильтр без удаления NA
- 27. Обнаружение громкого импульсного звука
- 28. Анализ импульсного поезда
- 29. css3 задержка импульсного эффекта
- 30. Android и Google Maps: анимация импульсного импульса
Немного расплывчатый. Я полагаю, вы должны решить, хотите ли вы линейный или нелинейный фильтр. Это может быть началом. – Jiminion
Как я узнал об адаптивных фильтрах, они действуют как линейные фильтры в некотором случае и как нелинейные фильтры в других ... Что вы предлагаете? –
Можете ли вы охарактеризовать импульс пространственно? Всегда ли они положительны или отрицательны? Или оба? Если у вас есть размер, я бы предложил либо линейный фильтр, чтобы сгладить его (сохраняет информацию), либо нелинейный, чтобы полностью удалить его (не сохраняет всю информацию). – Jiminion