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
参考技术AI=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个像素进行排序,最后将这个矩阵的中心点赋值为这九个像素的中值。
-
close all;clear all;clc;
-
I=imread('image3.jpg');
-
J=rgb2gray(I);
-
J=im2double(J);
-
P1=imnoise(J,'gaussian',0.02);%添加高斯噪声
-
P2=imnoise(J,'salt & pepper',0.02);%添加椒盐噪声
-
G=medfilt2(P1);%对高斯噪声中值滤波
-
H=medfilt2(P2);%对椒盐噪声中值滤波
-
figure;
三、运行结果
四、备注
完整代码或者代写添加QQ1575304183
以上是关于Matlab中 如何导入png图片 并进行中值滤波(3*3) 然后进行二值化处理阈值为128 如果东西好还可以进行追分的主要内容,如果未能解决你的问题,请参考以下文章
FPGA教程案例44图像案例4——基于FPGA的图像中值滤波verilog实现,通过MATLAB进行辅助验证
python 中一维数据中值滤波函数,在matlab中有 medfilt1函数,Python中有吗,只找到了图像2维的,