【问题标题】:How to apply median filter in all images and store in a directory?如何在所有图像中应用中值过滤器并存储在目录中?
【发布时间】:2021-07-06 05:58:08
【问题描述】:
f = 'C:\Users\HP\Desktop\images';
d = ls(f);
d(1,:)=[]
d(1,:)=[]
mkdir('New_images')
for i=1:size(d)
   I=imread(fullfile(f,d(i,:)));
   Kmedian = I;
   for i = 1:3
       Kmedian(:,:,i) = medfilt2(Kmedian(:,:,i));
   end
   Kmedian=imresize(Kmedian,[227 227]);
   imshow(Kmedian)
   imwrite(Kmedian,fullfile('New_images',strcat(num2str(i),'.jpeg')));
end

如何一次使用中值滤波器。

错误: 在调整大小(第 5 行) 位置 3 的索引超出数组边界(不得超过 1)。

调整大小错误(第 10 行) Kmedian(:,:,i) = medfilt2(Kmedian(:,:,i));

【问题讨论】:

  • 在显示之前调用最适合您的过滤器方法? se.mathworks.com/help/images/noise-removal.html(例如I = medfilt2(I);)
  • 但我遇到了错误。先生,您能否在上面编写的代码中添加这些行?我是 matlab 新手。
  • 我认为最好展示您尝试过的内容以及遇到的问题。
  • 我添加了“Kmedian = medfilt2(f)”
  • 请记住,在显示您尝试过的内容后,您应该始终指定遇到的错误消息是什么。

标签: matlab image-processing filter blur noise-reduction


【解决方案1】:

medfilt2 功能当时仅适用于 1 个频道。如果您有彩色图像,则您的像素“矩阵”将分别具有红色、绿色、蓝色通道的第三维。

您仍然可以使用medfilt2 函数,方法是将您的图像转换为灰度,或将其单独应用于每个通道。

Kmedian = I;
for i = 1:size(Kmedian,3)  % Iterate over all the channels in the image
    Kmedian(:,:,i) = medfilt2(Kmedian(:,:,i));
end

更新为同时考虑单通道和多通道图像

【讨论】:

  • 谢谢先生。我现在仍然面临2个错误。上面更新了代码和错误。
  • 供参考:当我回答问题时Kmedian = medfilt2(I) 是为了以防万一这个答案在给定问题的情况下不再有意义。我只能猜测你混合了彩色和灰度图像(你没有指定)所以我编辑了答案来解释。
  • 谢谢您,先生。
猜你喜欢
  • 2014-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2018-02-11
  • 1970-01-01
相关资源
最近更新 更多