1.图像反转
MATLAB程序实现如下:
I=imread('xian.bmp');
J=double(I);
J=-J+(256-1);                 %图像反转线性变换
H=uint8(J);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(H);

2.灰度线性变换
MATLAB程序实现如下:
I=imread('xian.bmp');
subplot(2,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系
I1=rgb2gray(I);
subplot(2,2,2),imshow(I1);
title('灰度图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系
J=imadjust(I1,[0.1 0.5],[]); %局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1]
subplot(2,2,3),imshow(J);
title('线性变换图像[0.1 0.5]');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
K=imadjust(I1,[0.3 0.7],[]); %局部拉伸,把[0.3 0.7]内的灰度拉伸为[0 1]
subplot(2,2,4),imshow(K);
title('线性变换图像[0.3 0.7]');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系

3.非线性变换
MATLAB程序实现如下:
I=imread('xian.bmp');
I1=rgb2gray(I);
subplot(1,2,1),imshow(I1);
title('灰度图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
J=double(I1);
J=40*(log(J+1));
H=uint8(J);
subplot(1,2,2),imshow(H);
title('对数变换图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系

4.直方图均衡化
MATLAB程序实现如下:
I=imread('xian.bmp');
I=rgb2gray(I);
figure;
subplot(2,2,1);
imshow(I);
subplot(2,2,2);
imhist(I);
I1=histeq(I);
figure;
subplot(2,2,1);
imshow(I1);
subplot(2,2,2);
imhist(I1);

5.线性平滑滤波器
用MATLAB实现领域平均法抑制噪声程序:
I=imread('xian.bmp');
subplot(231)
imshow(I)
title('原始图像')
I=rgb2gray(I);
I1=imnoise(I,'salt & pepper',0.02);
subplot(232)
imshow(I1)
title('添加椒盐噪声的图像')
k1=filter2(fspecial('average',3),I1)/255;          %进行3*3模板平滑滤波
k2=filter2(fspecial('average',5),I1)/255;          %进行5*5模板平滑滤波k3=filter2(fspecial('average',7),I1)/255;          %进行7*7模板平滑滤波
k4=filter2(fspecial('average',9),I1)/255;          %进行9*9模板平滑滤波
subplot(233),imshow(k1);title('3*3模板平滑滤波');
subplot(234),imshow(k2);title('5*5模板平滑滤波');
subplot(235),imshow(k3);title('7*7模板平滑滤波');
subplot(236),imshow(k4);title('9*9模板平滑滤波');

6.中值滤波器
用MATLAB实现中值滤波程序如下:
I=imread('xian.bmp');
I=rgb2gray(I);
J=imnoise(I,'salt&pepper',0.02);
subplot(231),imshow(I);title('原图像');
subplot(232),imshow(J);title('添加椒盐噪声图像');
k1=medfilt2(J);            %进行3*3模板中值滤波
k2=medfilt2(J,[5,5]);      %进行5*5模板中值滤波
k3=medfilt2(J,[7,7]);      %进行7*7模板中值滤波
k4=medfilt2(J,[9,9]);      %进行9*9模板中值滤波
subplot(233),imshow(k1);title('3*3模板中值滤波');
subplot(234),imshow(k2);title('5*5模板中值滤波');
subplot(235),imshow(k3);title('7*7模板中值滤波');
subplot(236),imshow(k4);title('9*9模板中值滤波');

7.用Sobel算子和拉普拉斯对图像锐化:
I=imread('xian.bmp');
subplot(2,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
I1=im2bw(I);
subplot(2,2,2),imshow(I1);
title('二值图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
H=fspecial('sobel');     %选择sobel算子 
J=filter2(H,I1);            %卷积运算
subplot(2,2,3),imshow(J); 
title('sobel算子锐化图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
h=[0 1 0,1 -4 1,0 1 0];   %拉普拉斯算子
J1=conv2(I1,h,'same');            %卷积运算
subplot(2,2,4),imshow(J1); 
title('拉普拉斯算子锐化图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系

8.梯度算子检测边缘
用MATLAB实现如下:
I=imread('xian.bmp');
subplot(2,3,1);
imshow(I);
title('原始图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
I1=im2bw(I);
subplot(2,3,2);
imshow(I1);
title('二值图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
I2=edge(I1,'roberts');
figure;
subplot(2,3,3);
imshow(I2);
title('roberts算子分割结果');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
I3=edge(I1,'sobel');
subplot(2,3,4);
imshow(I3);
title('sobel算子分割结果');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
I4=edge(I1,'Prewitt');
subplot(2,3,5);
imshow(I4);
title('Prewitt算子分割结果');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系

9.LOG算子检测边缘
用MATLAB程序实现如下:
I=imread('xian.bmp');
subplot(2,2,1);
imshow(I);
title('原始图像');
I1=rgb2gray(I);
subplot(2,2,2);
imshow(I1);
title('灰度图像');
I2=edge(I1,'log');
subplot(2,2,3);
imshow(I2);
title('log算子分割结果');

10.Canny算子检测边缘
用MATLAB程序实现如下:
I=imread('xian.bmp');
subplot(2,2,1);
imshow(I);
title('原始图像')
I1=rgb2gray(I);
subplot(2,2,2);
imshow(I1);
title('灰度图像');
I2=edge(I1,'canny');
subplot(2,2,3);
imshow(I2);
title('canny算子分割结果');

11.边界跟踪(bwtraceboundary函数)
clc
clear all
I=imread('xian.bmp');
figure
imshow(I);
title('原始图像');
I1=rgb2gray(I);                %将彩色图像转化灰度图像 
threshold=graythresh(I1);        %计算将灰度图像转化为二值图像所需的门限
BW=im2bw(I1, threshold);       %将灰度图像转化为二值图像
figure
imshow(BW);
title('二值图像');
dim=size(BW);
col=round(dim(2)/2)-90;         %计算起始点列坐标
row=find(BW(:,col),1);          %计算起始点行坐标
connectivity=8;
num_points=180;
contour=bwtraceboundary(BW,[row,col],'N',connectivity,num_points); 
%提取边界
figure
imshow(I1);
hold on;
plot(contour(:,2),contour(:,1), 'g','LineWidth' ,2);
title('边界跟踪图像');

12.Hough变换
I= imread('xian.bmp');
rotI=rgb2gray(I);
subplot(2,2,1);
imshow(rotI);
title('灰度图像');
axis([50,250,50,200]);
grid on;                 
axis on; 
BW=edge(rotI,'prewitt');
subplot(2,2,2);
imshow(BW);
title('prewitt算子边缘检测后图像');
axis([50,250,50,200]);
grid on;                 
axis on; 
[H,T,R]=hough(BW);
subplot(2,2,3);
imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');
title('霍夫变换图');
xlabel('\theta'),ylabel('\rho');
axis on , axis normal, hold on;
P=houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
x=T(P(:,2));y=R(P(:,1));
plot(x,y,'s','color','white');
lines=houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
subplot(2,2,4);,imshow(rotI);
title('霍夫变换图像检测');
axis([50,250,50,200]);
grid on;                 
axis on; 
hold on;
max_len=0;
for k=1:length(lines)
xy=[lines(k).point1;lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
len=norm(lines(k).point1-lines(k).point2);
if(len>max_len)
max_len=len;
xy_long=xy;
end
end
plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');

13.直方图阈值法
用MATLAB实现直方图阈值法:
I=imread('xian.bmp');
I1=rgb2gray(I);
figure;
subplot(2,2,1);
imshow(I1);
title('灰度图像')
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
[m,n]=size(I1);                            %测量图像尺寸参数
GP=zeros(1,256);                           %预创建存放灰度出现概率的向量
for k=0:255
     GP(k+1)=length(find(I1==k))/(m*n);    %计算每级灰度出现的概率,将其存入GP中相应位置
end
subplot(2,2,2),bar(0:255,GP,'g')                   %绘制直方图
title('灰度直方图')
xlabel('灰度值')
ylabel('出现概率') 
I2=im2bw(I,150/255);   
subplot(2,2,3),imshow(I2);
title('阈值150的分割图像')
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
I3=im2bw(I,200/255);   %
subplot(2,2,4),imshow(I3);
title('阈值200的分割图像')
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系

14. 自动阈值法:Otsu法
用MATLAB实现Otsu算法:
clc
clear all
I=imread('xian.bmp');
subplot(1,2,1),imshow(I);
title('原始图像')
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
level=graythresh(I);     %确定灰度阈值
BW=im2bw(I,level);
subplot(1,2,2),imshow(BW);
title('Otsu法阈值分割图像')
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系

15.膨胀操作
I=imread('xian.bmp');          %载入图像
I1=rgb2gray(I);
subplot(1,2,1);
imshow(I1);
title('灰度图像')      
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
se=strel('disk',1);          %生成圆形结构元素
I2=imdilate(I1,se);             %用生成的结构元素对图像进行膨胀
subplot(1,2,2);
imshow(I2);
title('膨胀后图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系

16.腐蚀操作
MATLAB实现腐蚀操作
I=imread('xian.bmp');          %载入图像
I1=rgb2gray(I);
subplot(1,2,1);
imshow(I1);
title('灰度图像')      
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
se=strel('disk',1);       %生成圆形结构元素
I2=imerode(I1,se);        %用生成的结构元素对图像进行腐蚀
subplot(1,2,2);
imshow(I2);
title('腐蚀后图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系

17.开启和闭合操作
用MATLAB实现开启和闭合操作
I=imread('xian.bmp');          %载入图像
subplot(2,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系 
I1=rgb2gray(I);
subplot(2,2,2),imshow(I1);
title('灰度图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系                   
se=strel('disk',1);     %采用半径为1的圆作为结构元素
I2=imopen(I1,se);         %开启操作
I3=imclose(I1,se);        %闭合操作
subplot(2,2,3),imshow(I2);
title('开启运算后图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系
subplot(2,2,4),imshow(I3);
title('闭合运算后图像');
axis([50,250,50,200]); 
axis on;                  %显示坐标系

18.开启和闭合组合操作
I=imread('xian.bmp');          %载入图像
subplot(3,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系 
I1=rgb2gray(I);
subplot(3,2,2),imshow(I1);
title('灰度图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系                   
se=strel('disk',1);     
I2=imopen(I1,se);         %开启操作
I3=imclose(I1,se);        %闭合操作
subplot(3,2,3),imshow(I2);
title('开启运算后图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系
subplot(3,2,4),imshow(I3);
title('闭合运算后图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系
se=strel('disk',1); 
I4=imopen(I1,se);
I5=imclose(I4,se);
subplot(3,2,5),imshow(I5);        %开—闭运算图像
title('开—闭运算图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系 
I6=imclose(I1,se);
I7=imopen(I6,se);
subplot(3,2,6),imshow(I7);        %闭—开运算图像 
title('闭—开运算图像');
axis([50,250,50,200]);
axis on;                  %显示坐标系

19.形态学边界提取
利用MATLAB实现如下:
I=imread('xian.bmp');          %载入图像
subplot(1,3,1),imshow(I);
title('原始图像'); 
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
I1=im2bw(I);
subplot(1,3,2),imshow(I1);
title('二值化图像');
axis([50,250,50,200]);
grid on;                  %显示网格线
axis on;                  %显示坐标系
I2=bwperim(I1);                 %获取区域的周长
subplot(1,3,3),imshow(I2); 
title('边界周长的二值图像');
axis([50,250,50,200]);
grid on;
axis on;

20.形态学骨架提取
利用MATLAB实现如下:
I=imread('xian.bmp');
subplot(2,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
axis on;                  
I1=im2bw(I);
subplot(2,2,2),imshow(I1);
title('二值图像');
axis([50,250,50,200]);
axis on;                 
I2=bwmorph(I1,'skel',1);
subplot(2,2,3),imshow(I2);
title('1次骨架提取');
axis([50,250,50,200]);
axis on;                  
I3=bwmorph(I1,'skel',2);
subplot(2,2,4),imshow(I3);
title('2次骨架提取');
axis([50,250,50,200]);
axis on;

21.直接提取四个顶点坐标
I = imread('xian.bmp');
I = I(:,:,1);
BW=im2bw(I); 
figure
imshow(~BW)
[x,y]=getpts

matlab图像分割算法源码相关推荐

  1. 超像素SLIC算法源码阅读

    超像素SLIC算法源码阅读 超像素SLIC算法源码阅读 SLIC简介 源码阅读 实验结果 其他超像素算法对比 超像素SLIC算法源码阅读 SLIC简介 SLIC的全称Simple Linear Ite ...

  2. 图像转置的MATLAB和OpenCV源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 注意,图像转置和图像旋转是两回事,图像转置只是把 ...

  3. 基于新唐M0的XXTEA加密解密算法源码

    源:基于新唐M0的XXTEA加密解密算法源码 /*--------------------------------------------------------------------------- ...

  4. [转] GIS算法源码集合

    其他GIS相关代码下载索引 http://www.mygis.com.cn/codeindex10.htm 1.深度优先实现的路径分析源码 http://www.mygis.com.cn/codes/ ...

  5. 机器学习算法源码全解析(三)-范数规则化之核范数与规则项参数选择

    前言 参见上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮叨下核范数和规则项参数选择.知识有限,以下都是我一些浅显的看法,如果理解存在错误,希望大家不吝指正.谢谢. 机器学习算法源码全解析( ...

  6. Learning to Rank中Pointwise关于PRank算法源码实现

    [学习排序] Learning to Rank中Pointwise关于PRank算法源码实现 标签: 学习排序PRankPointwiseLearning to Rank代码实现 2015-01-28 ...

  7. Java自动计算迷宫正确路线算法源码

    简介: Java自动计算迷宫正确路线算法源码,首先迷宫需要满足存在开始标识和结束标识与墙标识,然后设置好行数与列数就可以开始计算正确路线了,采用的是为二维数组然后走遍所有路线的方式. 网盘下载地址: ...

  8. Metis异常检测算法源码概要

    Metis异常检测算法源码概要 算法源码目录 算法层目录 基于指数移动平均算法(EWMA) 孤立森林 xgboost gbdt 3-Sigma 多项式回归 特征层目录 拟合特征 分类特征 统计特征 其 ...

  9. LeGo-LOAM激光雷达定位算法源码阅读(二)

    文章目录 1.featureAssociation框架 1.1节点代码主体 1.2 FeatureAssociation构造函数 1.3 runFeatureAssociation()主体函数 2.重 ...

  10. 基于LM的双目图像校准算法源码第一部分

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

最新文章

  1. 华为自动驾驶实车实路测试视频曝光!
  2. Nginx禁止特定用户代理(User Agents)访问(转)
  3. 封闭不能外出怎么办?阳台派对了解下!
  4. 【USACO Mar08】 奶牛跑步 A-star k短路
  5. 【SpringBoot零基础案例07】【IEDA 2021.1】多环境下.yml/.yaml配置文件的使用
  6. 达尔文进化奖_使用Kydavra GeneticAlgorithmSelector将达尔文进化应用于特征选择
  7. 《中国人工智能学会通讯》——11.21 结束语
  8. js获取今天剩余时间_js动画,setTimeout/setInterval的不准确
  9. c语言练习题:求1-1/2+1/3-1/4+... -1/100的值
  10. Ubuntu 新建qt项目时出现 No valid kits found.
  11. FOSCommentBundle功能包:添加Symfony2内建的ACL安全
  12. 阶段3 1.Mybatis_09.Mybatis的多表操作_8 mybatis多对多操作-查询角色获取角色下所属用户信息...
  13. Javc笔记(三) package和import
  14. 越狱完发现bigboss源是空白
  15. 查看本地ip地址和端口方法
  16. WORD设置从开始页数算总页数
  17. 【转载】关于MSHTML
  18. 企业常见的数据泄露点梳理
  19. 哪一款电容笔比较好用?平板电脑高性价比电容笔推荐
  20. 19年你应该关注这50款前端热门工具(下)

热门文章

  1. linux常用命令的全拼(转载)
  2. 用mapreduce 处理气象数据集
  3. [总结]板子整理——第二弹
  4. MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等)
  5. uploadify一次上传多个图片:效果展示
  6. 解决了跨域POST的问题
  7. [Android] Android RxJava2+Retrofit2+OkHttp3 的使用(一) --基础篇 Retrofit2 的使用
  8. Ruby数组(2):数组方法详细整理
  9. Java Web servletConfig 对象
  10. Leetcode 456.132模式