clc
clear all
close all
A = imread('cameraman.tif'); % 读入图像
imshow(A);title('原图');
V=0.008;
Noisy=imnoise(A,‘gaussian’,0,V);
figure1;
imshow(Noisy);%添加均值为0、方差0.008的高斯噪声
y_mask = [-1 -1 -1;0 0 0;1 1 1]; % 建立Y方向的模板
x_mask = y_mask'; % 建立X方向的模板
I = im2double(A); % 将图像数据转化为双精度
dx = imfilter(I, x_mask); % 计算X方向的梯度分量
dy = imfilter(I, y_mask); % 计算Y方向的梯度分量
grad = sqrt(dx.*dx + dy.*dy); % 计算梯度
grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像
level = graythresh(grad); % 计算灰度阈值
BW = im2bw(grad,level); % 用阈值分割梯度图像
figure, imshow(BW); % 显示分割后的图像即边缘图像
title('Prewitt')
就是这样了。
作为一个示例,现将刚刚显示的加有噪声的图像进行相加求平均以消除图像的噪声。在图像中我们给图像加的是均值为0,方差为0.02的高斯噪声,将图像相加了一百遍,再求其平均值。程序如下:%例图像加噪声再通过多次相加求平均的方法祛除噪声
[I,M]=imread('eight.tif');
J=imnoise(I,'gaussian',0,0.02);
subplot(1,2,1),imshow(I,M),title('原图像');
subplot(1,2,2),imshow(J,M),title('加噪声后图像');
K=zeros(242,308);
for i=1:100
J=imnoise(I,'gaussian',0,0.02);
J1=im2double(J);
K=K+J1;
end
K=K/100; %求图像的平均
figure;imshow(K),title('相加求平均后的图像');
看看这个