تقليل الضوضاء باستخدام مرشح الجسيمات في ماتلاب

StackOverflow https://stackoverflow.com//questions/24007508

  •  20-12-2019
  •  | 
  •  

سؤال

واني اسعى الى دينويز صورة باستخدام مرشح الجسيمات.ليس التنفيذ الكامل لمرشح الجسيمات ، أنا فقط باستخدام جزء منه.أنا جديد على ماتلاب وأنا الحصول على الخطأ التالي

"Index exceeds matrix dimensions.

Error in particle_filter_denoising (line 42)
         Xkposeterior=[EImg(i,j-1);EImg(i-1,j);EImg(i-1,j-1)];"

حاولت تصحيح الأخطاء ، لكنني لست قادرا على العثور على سبب خطأ الكود.

    Img = imread('a.jpg');
Img= rgb2gray(Img);
Img=im2double(Img);
V =0.001;
clc;

x_N=V ;
x_R=V *2;
NImg=imnoise(Img,'gaussian',Var);

subplot(1,3,1);imshow(Img);title('Original Image');
subplot(1,3,2);imshow(NImg);title('Noisy Gaussian Image');

[r  c] =size(Img);
EImg=zeros(r,c);
EImg(1,:) =Img(1,:);
EImg(:,1)=Img(:,1);
A=[0.35 0.35 0.3;0 1 0;0 0 1];

%Initial state
Xkposeterior=[EImg(2,  1);EImg(1,2);EImg(1,1)];
X_prior = A*Xkposeterior;

%particles
N=100;
X_Particle=[];

X_P_wi=[];

for i = 1:N
    X_Particle(i) = X_prior(1) + sqrt(V) * randn;
end




%%Xkposeterior=[EImg(2,1);EImg(1,2);EImg(1,1)];
for i=2:r
    for j=2:c
         Zk=NImg(i,j);

         Xkposeterior=[EImg(i,j-1);EImg(i-1,j);EImg(i-1,j-1)];
         X_prior = A*Xkposeterior;
         for k_particle=1:N
             X_Particle(k_particle)=X_prior(1) + sqrt(V) * randn;
             X_P_wi(k_particle)=(1/sqrt(2*pi*x_R)) * exp(-(Zk - X_Particle(k_particle))^2/(2*x_R));
         end
         X_P_wi = X_P_wi./sum(X_P_wi);
         for m = 1 : N
            X_Particle(m) = X_Particle(find(rand <= cumsum( X_P_wi),1));
         end    

         EImg= mean(X_Particle);



    end
end




subplot(1,3,3);imshow(EImg, []);title(' Particle Denoised Image');
هل كانت مفيدة؟

المحلول

الخطأ يعني ذلك i أو j أكبر من عدد الصفوف أو الأعمدة في EImg.

السبب في أن يحدث هو أنك الكتابة EImg في كل تكرار للحلقة ، عند الخط: EImg=mean(X_Particle).هذا يجعل EImg مجموعة مختلفة الحجم ، وهكذا لن يكون r الصفوف و c الأعمدة بعد الآن.لا استطيع ان اقول لكم كيفية إصلاح المشكلة ، لأنني لا أعرف ما يفعله رمز ، ولكن هذا هو السبب في أنك ترى الخطأ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top