您的位置:首页 > 编程语言 > MATLAB

Matlab处理图像的一般方法

2015-04-06 22:03 405 查看
Matlab是强大的数学问题处理软件,同时也是图像处理强有力的工具。本文通过几个实例具体介绍Matlab下如何进行图像处理。

(1)图像的读取与输出

Matlab读取图像的基本方法是

imageName = imread('nameOfImage');
支持JPG,PNG,BMP和TIF等各种格式的图片,读取后的imageName是一个uint8类型的矩阵,其元素值为图像像素点的灰度。

读取图像后,可用

imshow('imageName');
来显示所读取的图像,或者用
imwrite(imageName, 'nameOfImage');

将图像输出。

(2)图像的变换

对图像进行变换实际上是通过改变图像各像素点的灰度值以改变图像的视觉效果,一般分为线性和非线性两类。

线性变换实例:
image = imread('desert.jpg');

[m,n] = size(image);

min = min(image(:));
max = max(image(:));

for i = 1:m
for j = 1:n
image(i,j) = floor((255 - 0) / (max - min) * (image(i,j) - min) + 0);
end
end

imshow(image);
imwrite(image, 'desert1.jpg');


这样图像就从原来的

变为



(3)图像的空间域平滑与锐化

图像平滑的主要目的是消除噪声或模糊图像,去除小的细节货弥合目标间的缝隙,而图像锐化恰恰相反。方法一般是通过模版与图像的某区域作卷积运算

图像平滑实例:

1.邻域平均法

function outputImage = averageInDomain(image,template)
outputImage = image;
[m, n] = size(image);
for i = 2:(m - 1)
for j = 2:(n - 1)
core = image((i - 1):(i + 1), (j - 1):(j + 1));
temp = 1 / sum(template(:)) * (double(core) .* double(template));
outputImage(i,j) = floor(sum(temp(:)));
end
end


这里template是卷积所用的模版,image是待处理的图像,outputImage是输出的结果。

2.中值滤波法
function outputImage = midvalueFilter(image)
[m, n] = size(image);
outputImage = image;
for i = 2:(m - 1)
for j = 2:(n - 1)
core = image((i - 1):(i + 1), (j - 1):(j + 1));
temp = sort(reshape(core, 1, 9));
outputImage(i, j) = temp(5);
end
end


各变量是什么不再赘述。

上面总结了一些常见的图像处理方法,Matlab的功能远比上述所列举的强大。需要不断积累,练习才能较好的掌握Matlab处理图像的技巧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: