8. matlab图像处理基础——边缘检测+形态学变换+图像增强

Posted fengxb1213

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8. matlab图像处理基础——边缘检测+形态学变换+图像增强相关的知识,希望对你有一定的参考价值。

1、边缘检测

① 处理结果 = edge(原始图像,算子)

  算子:

    Sobel    log

    Roberts      Canny

    Prewitt       zerocross

%% 边缘检测
I = imread(‘cameraman.tif‘);
J1 = edge(I,‘Sobel‘);
subplot(3,3,1),imshow(I);title(‘原始图像‘);
subplot(3,3,2),imshow(J1);title(‘Sobel检测图像‘);
J2 = edge(I,‘Roberts‘);
subplot(3,3,3),imshow(J2);title(‘Roberts检测图像‘);
J3 = edge(I,‘Prewitt‘);
subplot(3,3,4),imshow(J3);title(‘Prewitt检测图像‘);
J4 = edge(I,‘log‘);
subplot(3,3,5),imshow(J4);title(‘log检测图像‘);
J5 = edge(I,‘Canny‘);
subplot(3,3,6),imshow(J5);title(‘Canny检测图像‘);
J6 = edge(I,‘zerocross‘);
subplot(3,3,7),imshow(J6);title(‘zerocross检测图像‘);

技术图片

2、形态学变换

(1)图像腐蚀

  se = strel(‘disk‘ ,3);

  resultImage=imerode(originalImage, se);

技术图片

%% 图像腐蚀
I = imread(‘cameraman.tif‘);
se = strel(‘disk‘,3);
J = imerode(I,se);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);

技术图片

(2)膨胀

  se = strel(‘disk‘ ,3);

  resultImage=imdilate(originalImage, se);

技术图片

%% 膨胀
I = imread(‘cameraman.tif‘);
se = strel(‘disk‘,3);
J = imdilate(I,se);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);

技术图片

(3)开运算

  先腐蚀,后膨胀。

  A被B形态学开运算表示为:A•B

  A被B腐蚀,再用B膨胀结果。

  se = strel(‘square‘ ,3);

  resultImage=imopen(originalImage, se);

技术图片

%% 开运算
I = imread(‘cameraman.tif‘);
se = strel(‘square‘,3);
J = imopen(I,se);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);

技术图片

(4)闭运算

  先膨胀,后腐蚀。

  A被B形态学闭运算表示为:A•B

  A被B膨胀,再用B腐蚀结果。

  se = strel(‘square‘ ,3);

  resultImage=imclose(originalImage, se);

技术图片

%% 闭运算
I = imread(‘cameraman.tif‘);
se = strel(‘square‘,3);
J = imclose(I,se);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);

技术图片

3、图像增强

(1)直方图

  imhist(原图像)

%% 直方图
I = imread(‘cameraman.tif‘);
imhist(I);

技术图片

① 直方图的均衡化:

  经过均衡化处理的图像,像素占有更多的灰度级并且分布更均衡。这样的图像,具有较高的对比图。

  处理结果=histeq(原始图像)

%% 均衡化
I = imread(‘cameraman.tif‘);
J = histeq(I);
subplot(2,2,1),imshow(I);
subplot(2,2,2),imshow(J);
subplot(2,2,3),imhist(J);

技术图片

(2)灰度变换

  结果=imadjust(原始图像,[原值范围],[新值范围])

  原始图像:自动切换到值在[0,1]

  [原值范围]:[值1,值2]

  [新值范围]:[值3,值4]

%% 灰度变换
I = imread(‘cameraman.tif‘);
J1 = imadjust(I,[0.3 0.7],[0 1]);
J2 = imadjust(I,[0 1],[1 0]); % 负片
subplot(1,3,1),imshow(I);
subplot(1,3,2),imshow(J1);
subplot(1,3,3),imshow(J2);

技术图片

(3)灰度对数变换

  增强一幅图像中较暗部分的细节。

  目标图像=log(原始图像);

  代码:J=log(im2double(I)+1);

I = imread(‘cameraman.tif‘);
J = log(im2double(I)+10);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J,[]);

技术图片

(4)中值滤波

  处理结果=medfilt2(原始图像);

%% 中值滤波 
I = imread(‘cameraman.tif‘);
J = medfilt2(I);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);

技术图片

 

以上是关于8. matlab图像处理基础——边缘检测+形态学变换+图像增强的主要内容,如果未能解决你的问题,请参考以下文章

基于Canny边缘提取和形态学处理的公交车上车人数跟踪和统计matlab仿真

手掌识别基于matlab形态学手掌长宽检测含Matlab源码 1382期

焊缝边缘检测算法对比分析与MATLAB实现matlab优化算法二

用MATLAB的数学形态学做图像分割的步骤是啥啊? 先腐蚀在膨胀 还是说先得用到边缘检测啥的?

细胞分割基于matlab GUI阈值+边缘+形态学+种子点+主动轮廓图像分割含Matlab源码 1477期

细胞分割基于matlab GUI阈值+边缘+形态学+种子点+主动轮廓图像分割含Matlab源码 1477期