Matlab中 如何导入png图片 并进行中值滤波(3*3) 然后进行二值化处理阈值为128 如果东西好还可以进行追分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab中 如何导入png图片 并进行中值滤波(3*3) 然后进行二值化处理阈值为128 如果东西好还可以进行追分相关的知识,希望对你有一定的参考价值。

要求要有程序代码

方法一:

imfinfo('test.png')%查看图片文件信息

%可以看出图片是真彩色图像,ColorType: 'truecolor'

%转换为灰度图像进行处理

X=imread('test.png');

X=rgb2gray(X);

X=im2double(X);%uint8转换为double类型

%保留运算后的负值

%防止运算时精度丢失

g=medfilt2(X,[3 3],'symmetric');%中值滤波3*3,采用对称的填充方式

g1=im2uint8(g);%double[0,1]----->uint8[0,255]

%二值化处理

g1(find(g1<128))=0;

g1(find(g1>=128))=1;

subplot(3,1,1);

imshow(X,[]);title('原图');

subplot(3,1,2);

imshow(g,[]);title('3*3中值滤波');

subplot(3,1,3);

imshow(g1,[]);title('3*3中值滤波+二值化处理');

结果见1.png

方法二:

imfinfo('test.png')%查看图片文件信息

%可以看出图片是真彩色图像,ColorType: 'truecolor'

%转换为灰度图像进行处理

X=imread('test.png');

X=rgb2gray(X);

X=im2double(X);%uint8转换为double类型

%保留运算后的负值

%防止运算时精度丢失

g=medfilt2(X,[3 3],'symmetric');%中值滤波3*3,采用对称的填充方式

g1=mat2gray(g);

g1=im2bw(g1,0.5);%二值化处理,im2bw:image to black-white的意思

subplot(3,1,1);

imshow(X);title('原图');

subplot(3,1,2);

imshow(g);title('3*3中值滤波');

subplot(3,1,3);

imshow(g1);title('3*3中值滤波+二值化处理');

结果与前面的相同。

参考资料:《Digital Image Processing Using MATLAB》Rafael C.Gonzalez

参考技术A

I=imread('E:\\QQ截图(百度知道)\\f7246b6068c9691ceaf8f837.png');

I=rgb2gray(I);

I2=medfilt2(I,[3 3]);

[m,n]=size(I2);

I3=zeros(m,n);

   for i=1:m

     for j=1:n

       if I2(i,j)>128

         I3(i,j)=255;

       else

          I3(i,j)=0;

      end

    end

  end

           

I3=uint8(I3);

figure,imshow(I3)

图像去噪中值滤波和均值滤波matlab源码

一.均值滤波

          图片中一个方块区域(一般为3*3)内,中心点的像素为全部点像素值的平均值。均值滤波就是对于整张图片进行以上操作。

我们可以看下图的矩阵进行理解

                                                                      

                         

缺陷:均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。特别是椒盐噪声

中值滤波取卷积核当中所覆盖像素中的中值作为锚点的像素值即可。此时实验中所用到的为3*3的卷积模板。即3行3列共9个元素的中值作为当前元素的像素值。

二.中值滤波

       首先,我们复习中值。在一连串数字{1,4,6,8,9}中,数字6就是这串数字的中值。由此我们可以应用到图像处理中。依然我们在图像中去3*3的矩阵,里面有9个像素点,我们将9个像素进行排序,最后将这个矩阵的中心点赋值为这九个像素的中值。

                                     

 
  1. close all;clear all;clc;

  2. I=imread('image3.jpg');

  3. J=rgb2gray(I);

  4. J=im2double(J);

  5. P1=imnoise(J,'gaussian',0.02);%添加高斯噪声

  6. P2=imnoise(J,'salt & pepper',0.02);%添加椒盐噪声

  7. G=medfilt2(P1);%对高斯噪声中值滤波

  8. H=medfilt2(P2);%对椒盐噪声中值滤波

  9. figure;

三、运行结果

在这里插入图片描述
在这里插入图片描述

四、备注

完整代码或者代写添加QQ1575304183

以上是关于Matlab中 如何导入png图片 并进行中值滤波(3*3) 然后进行二值化处理阈值为128 如果东西好还可以进行追分的主要内容,如果未能解决你的问题,请参考以下文章

matlab操作?

图像去噪中值滤波和均值滤波matlab源码

FPGA教程案例44图像案例4——基于FPGA的图像中值滤波verilog实现,通过MATLAB进行辅助验证

怎样用MATLAB实现中值和均值滤波

几种常见空间滤波器MATLAB实现

python 中一维数据中值滤波函数,在matlab中有 medfilt1函数,Python中有吗,只找到了图像2维的,