失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Matlab实现图像高斯滤波(公开代码)

Matlab实现图像高斯滤波(公开代码)

时间:2023-04-19 03:41:07

相关推荐

Matlab实现图像高斯滤波(公开代码)

Matlab 独立动手实现高斯滤波

close all;clear all;clc;I = imread('1.jpg');I = imnoise(I,'gaussian',0,0.01);[img_w,img_h,img_channel] = size(I);figure;imshow(I);for channel=1:1:img_channelimg=I(:,:,channel);core_size=5;%卷积核大小,必须是奇数sigma=1;%标准差%%%生成高斯核core_xy=(core_size+1)./2;for x=1:1:core_sizefor y=1:1:core_sizer2=sqrt(abs(x-core_xy))+sqrt(abs(y-core_xy));kernel(x,y)=exp((-r2)./(2.*sigma*sigma));endendkernel=kernel./sum(sum(kernel));core_size=size(kernel,1);core_xy=(core_size+1)./2;%%expert_size=(size(kernel,1)-1);%补零大小img_data=uint8(zeros(size(img,1)+expert_size,size(img,2)+expert_size));for x=1:1:size(img,1)for y=1:1:size(img,2)img_data(x+(expert_size./2),y+(expert_size./2))=img(x,y);endend%%%卷积img_data2=img_data;%设置临时变量for x=core_xy :1:size(img_data,1)-core_xy+1for y=core_xy :1:size(img_data,2)-core_xy+1a=[];%设置临时变量,保存每个卷积子块对应的值for i=-core_xy+1:1:core_xy-1for j=-core_xy+1:1:core_xy-1a(i+core_xy,j+core_xy)=kernel(i+core_xy,j+core_xy)*img_data(x+i,y+j) ;endendimg_data2(x,y)=sum(sum(a));endendimg_data2=imcrop(img_data2,[expert_size./2+1 expert_size./2+1 size(img,2)-1 size(img,1)-1]);%位置和区域大小I(:,:,channel)=img_data2;endfigure;imshow(I);

如果觉得《Matlab实现图像高斯滤波(公开代码)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。