| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 使用边缘检测和形态学检测细胞 -> 正文阅读 |
|
[人工智能]使用边缘检测和形态学检测细胞 |
1.读取图像在 ?I = imread('cell.tif');%读取这张名为cell.tif的图 ?imshow(I)%显示它 ?title('Original Image');%名字为‘原始图片’- ?text(size(I,2),size(I,1)+15, ...%size括号里的参数一个代表长,一个代表宽。-具体啥意思我有疑问????- ? ? ?'Image courtesy of Alan Partin', ... ? ? ?'FontSize',7,'HorizontalAlignment','right'); ?text(size(I,2),size(I,1)+25, .... ? ? ?'Johns Hopkins University', ... ? ? ?'FontSize',7,'HorizontalAlignment','right'); 步骤 2:检测整个细胞要分割的对象与背景图像的对比度相差很大。计算图像梯度的算子(sobel算子可以计算图像梯度,计算图像梯度的作用是提取边界。)可以检测到对比度的变化。要创建包含分割后的细胞的二值掩膜,请计算梯度图像并应用一个阈值 -。 使用 ?[~,threshold] = edge(I,'sobel');%%使用sober算法检测图像边缘 ?fudgeFactor = 0.5;%阈值 ?BWs = edge(I,'sobel',threshold * fudgeFactor);%返回强度高于 threshold * fudgeFactor的所有边缘 这里的阈值怎么选择?试出来的! 显示生成的二元梯度掩膜 ?imshow(BWs) ?title('Binary Gradient Mask') 步骤 3:膨胀图像二元梯度掩膜显示图像中高对比度的线条。这些线条没有很好地描绘出关注对象的轮廓。与原始图像相比,梯度掩膜中对象周围的线条有间隙。如果使用线性结构元素膨胀 Sobel 图像,这些线性间隙将消失。使用 ?se90 = strel('line',3,90);%SE = strel('line',len,deg) %创建一个关于邻域中心对称的线性结构元素,长度约为 len,角度约为 %deg ?se0 = strel('line',3,0); 先后使用垂直结构元素和水平结构元素,来膨胀二元梯度掩膜。使用 ?BWsdil = imdilate(BWs,[se90 se0]); ?imshow(BWsdil) ?title('Dilated Gradient Mask') J = imdilate(I,SE) 用于膨胀灰度图像、二值图像或压缩二值图像 I,返回膨胀图像 J。SE 是结构元素对象或结构元素对象的数组,由 strel 或 offsetstrel 函数返回。 步骤 4:填补内部间隙膨胀的梯度掩膜很好地显示了细胞的轮廓,但细胞内部仍有小孔。要填充这些孔洞,请使用 ?BWdfill = imfill(BWsdil,'holes'); ?imshow(BWdfill) ?title('Binary Image with Filled Holes') 步骤 5:删除边界上的连通对象关注的细胞已成功分割,但它不是被发现的唯一对象。可以使用 %4-连通,如果像素的边缘接触,像素就会连接起来。像素的邻域是水平或垂直方向上的相邻像素。 ?BWnobord = imclearborder(BWdfill,4); ?imshow(BWnobord) ?title('Cleared Border Image') 步骤 6:平滑处理对象最后,为了使分割后的对象看起来自然,用菱形结构元素对图像腐蚀两次来平滑处理对象。使用 ?seD = strel('diamond',1); ?BWfinal = imerode(BWnobord,seD); ?BWfinal = imerode(BWfinal,seD); ?imshow(BWfinal) ?title('Segmented Image'); %SE = strel('diamond',r) 创建一个菱形结构元素,其中 r 指定从结构元素原点到菱形各点的距离 diamond是菱形 %J = imerode(I,SE) 腐蚀灰度图像、二值图像或压缩二值图像 I,返回腐蚀图像 J。SE 是结构元素对象或结构元素对象的数组,由 strel 或 offsetstrel 函数返回。 步骤 7:可视化分割显示分割后的对象的另一种方法是在分割的细胞周围绘制轮廓。使用 BWoutline = bwperim(BWfinal); Segout = I; Segout(BWoutline) = 255; imshow(Segout) title('Outlined Original Image') %BW2 = bwperim(BW)返回仅包含输入图像中对象的周边像素的二进制图像。BW。如果像素是非零的,并且连接到至少一个零值像素,则像素是外围的一部分 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 6:35:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |