如何利用matlab对图像进行处理,效果如图所示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用matlab对图像进行处理,效果如图所示相关的知识,希望对你有一定的参考价值。

1、你什么图像?rgb、灰度图还是二值图像?rgb的话反什么色?
二值图像反色:bw1=~bw;%bw是原二值图像,bw1为反色后图像
2、rgb到灰度图:
p=imread('tuxiang.jpg');%rgb图
gray=rgb2gray(p);%灰度图
figure,imshow(gray);%显示灰度图
3、灰度图后的阈值分割:
bw=im2bw(gray,graythresh(gray));%graythresh()系统自动取阈值进行灰度图分割,生成二值图像
4、灰度图线性变换,对比度增强:
gray1=imadjust(gray,[0.2,0.7],[]);
5、灰度窗口变换不理解;
6、灰度拉伸是对比度增强不会;
7、直方图就是:imhist(gray);
8、直方图均衡:gray2=histeq(gray);

图像几何运算不太懂,就知道个imrotate旋转,你看看别的书。以上我讲的这些都是非常基础的,你要想做什么实际项目是不够的,建议你多看点书,或者在实际应用中发现问题并解决。
参考技术A 第一张图是最优窗法处理过的吗?
第一排是使用模糊算法处理的(高斯模糊?)调整了模糊参数形成的
第二排是图像锐化(sober算子?)可以看见明显的轮廓也是调整参数形成的
matlab有自带的工具箱和图像函数库,还有完整的demo
在帮助文件里查找高斯模糊的算法和sober算子的算法就能解决了吧
参考技术B rgb到灰度图:
p=imread('tuxiang.jpg');%rgb图
gray=rgb2gray(p);%灰度图
figure,imshow(gray);%显示灰度图

matlab矩阵缩小和放大

Matlab里的imresize函数可以对图像放大和缩小,但这同时也会改变图像矩阵的大小,如果想要上图所示的结果,需要再进行一些处理,处理代码如下所示。

clc
close all;

% 从当前目录下打开一张图片
[filename, filepath] = uigetfile('*.jpg;*.ppm; jpeg *.;*.bmp;*.png','Choose Input Image');
if isequal(filename,0) || isequal(filepath,0)
disp('User pressed cancel')
return
else
fullfp = fullfile(filepath, filename);
end
image = imread(fullfp); %代表要处理的图像
mysize = size(image);
%把图像转换成灰度图
if numel(mysize) > 2
image = rgb2gray(image);
end
r_e = mysize(1);
c_e = mysize(2);
subplot(2,3,1); imshow(image,[]); title('Input Image');

temp1 = imresize(image,2); %表示把图像放大到原来的两倍,但同时图像矩阵也是变成了原来的两倍
[r_t1,c_t1] = size(temp1);
s = temp1(round(r_t1/2)-floor(r_e/2) : round(r_t1/2)+ceil(r_e/2)-1, round(c_t1/2)-floor(c_e/2) : round(c_t1/2)+ceil(c_e/2)-1);
subplot(2,3,2); imshow(s,[]); title('Magnification');

temp2 = imresize(image,0.5); %表示把图像缩小到原来的一半,但同时图像矩阵也变成了原来的一半
[r_t2,c_t2] = size(temp2);
temp3 = zeros(r_e,c_e);
temp3(round(r_e/2)-floor(r_t2/2) : round(r_e/2)+ceil(r_t2/2)-1, round(c_e/2)-floor(c_t2/2) : round(c_e/2)+ceil(c_t2/2)-1) = temp2;
ss = temp3;
subplot(2,3,3); imshow(ss,[]); title('Minification');
登录后复制

ps:直接调用imresize函数而不进行处理的效果如下图所示:

看起来图像没怎么变化,但存储图像的矩阵已经变大或变小了,如下图所示:

image为原始图像矩阵,temp1为放大后的图像矩阵,temp2为缩小后的图像矩阵
参考技术A 在MATLAB中,可以使用imresize();函数来实现矩阵缩小和放大。该函数可以实现改变图像大小、比例和像素数量的功能。

以上是关于如何利用matlab对图像进行处理,效果如图所示的主要内容,如果未能解决你的问题,请参考以下文章

matlab如何进行图像置乱

如何对matlab plot生成的fig曲线图像进行去噪,平滑处理。

机器视觉实验一 图像增强的Matlab实现

matlab矩阵缩小和放大

matlab图像显示及保存

怎样用matlab进行图像滤波处理