计算细胞面积和参数

22日视图(30天)
izyan hanum
izyan hanum 2015年3月15日
评论道: 图像分析 2019年12月28日
我有痰的形象。分割后,我需要计算区域和参数。这是我的编码。之后,我不知道如何开始我的计算区域形象。请帮我
%得到图像文件
形象= imread (“C: \ \用户宏碁\ \ USM16.jpg '照片);
image1 =图像;
图(1)中,次要情节(3,- 3,- 1),imshow (image1)、标题(原始图像的);
%,灰度
红色= image1 (:: 1);
绿色= image1 (:: 2);
蓝色= image1 (:: 3);
image_gray = rgb2gray(图片);
图(1)中,次要情节(3、3、2),imshow (image_gray)、标题(“灰度”);
% tobinary
水平= graythresh (image_gray);
BW = im2bw (image_gray、水平);
图(1)中,次要情节(3,3,3),imshow (BW)、标题(“二元”);
%关闭
se = strel (“磁盘”10);
afterclosing = imclose (BW, se);
图(1)中,次要情节(3、3、4),imshow (afterclosing)、标题(“关闭”);
%开放
afteropen = imopen (afterclosing, se);
图(1)中,次要情节(3、3、5),imshow (afteropen)、标题(“打开”);

接受的答案

约翰BG
约翰BG 2017年2月10日
编辑:约翰BG 2017年2月11日
Hizyan Hanum嗨
黑暗哈桑Memon嗨
让我试着回答你的问题。
如果你想要我进一步发展的任何特定部分我的回答只是让我知道。
如果觉得有用请其标记为接受答案,谢谢提前:
1。
捕获
一个= imread (“sample1.jpg”);
标题(“初始图像”);
2。
有时RGB层之间的差异显示了一个清晰的边界
图(5);瓦拉=冲浪(var(双(A), 0, 3));
B = varA.CData;
B (B < 1000) = 0;
B (B > = 1000) = 255;
图(6);imshow (B)
3所示。
RGB分裂
因为方差细胞看起来“脱水”,RGB分裂
ColorList = {“红”“绿色”“蓝”};
N = 255; gr = 0:1 / (N - 1): 1;
图(1);imshow(一个);
提出= 0 (N, 3);提出(:1)= gr;
图(2);人力资源= imshow (ind2rgb((:,: 1),提出));标题(ColorList {1});
%过滤绿色
提出= 0 (N, 3);提出(:,2)= gr;
图(3);hg = imshow (ind2rgb((:,: 2),提出));标题(ColorList {2});
%过滤蓝调
提出= 0 (N, 3);提出(:,3)= gr;
图(4);hb = imshow (ind2rgb((:,:, 3),提出));标题(ColorList {3});
C = hg.CData;
图(7);imshow (C);
C = C (:: 2), C = 255 * C;
C (C > 150) = 255;
C C (< 150) = 0;
图(8);imshow (C);
4所示。
面积,以像素为单位
元素个数(C)
=
198660年
区域像素
(非零元素个数(~ C))
=
6172年
一样
[残雪,cy] =找到(~ C);
元素个数(cx)
=
6172年
在百分比
100 *元素个数(非零(~ C)) /元素个数(C)
=
3.106815664955200
有3.1%是红色的标记细胞
5。
后和MATLAB的例子使用RGB到L * a * b和k - means聚类
一个= imread (“sample1.jpg”);
图(1);imshow (A)
cform = makecform (“srgb2lab”);% RGB到L * a * b颜色空间
lab_he = applycform (cform);
ab =双(lab_he (:,: 2:3));
nrows =大小(ab, 1);
ncols =大小(ab, 2);
ab =重塑(ab nrows * ncols 2);
nColors = 3;%与k - means聚类
%重复集群3次,以避免局部最小值
[cluster_idx, cluster_center] = kmeans (ab、nColors“距离”,“sqEuclidean”,“复制”3);
pixel_labels =重塑(cluster_idx、nrows ncols);%标签所有像素! ?
图(2);imshow (pixel_labels[]),标题(集群的图像标记指数”);
segmented_images =细胞(1、3);
rgb_label = repmat (pixel_labels [1 1 3]);
k = 1: nColors%子图片分割的颜色
颜色=;
颜色(rgb_label ~ = k) = 0;
segmented_images {k} =颜色;
结束
图(3);imshow (segmented_images{1}),标题(“对象在集群1”);
图(4);imshow (segmented_images{2}),标题(《集群对象2》);
。如果标签被所有感兴趣的细胞,只有细胞感兴趣的(假设小斑点不包含红色标记)然后更准确的面积百分比
C = segmented_images {2};
C1 = C (:: 1); imshow (C1)
C1 (C1 > 100) = 255; C1 (C1 < 100) = 0;
100 *元素个数(非零(C1)) /元素个数(C1)
=
2.281787979462398
谢谢你的时间和注意力,欢迎任何反馈等待答案
约翰BG
1评论
黑暗哈桑memon
黑暗哈桑memon 2018年3月2日
做得好. .非常感谢你

登录置评。

更多的答案(4)

图像分析
图像分析 2015年3月15日
看到我的图像分割教程 //www.tianjin-qmedu.com/matlabcentral/fileexchange/?term=authorid%3A31862 这样,你就会知道该怎么做:
labeledImage = bwlabel (afteropen);
测量= regionprops (labeledImage,“区域”,“周长”);
allAreas = [measurements.Area];
allPerimeters = [measurements.Perimeters];
4评论
izyan hanum
izyan hanum 2015年3月17日
谢谢:)我将尽我最大的努力

登录置评。


黑暗哈桑memon
黑暗哈桑memon 2017年2月10日
我希望代码感染细胞从血液样本图片如果任何一个有任何想法关于这个话题然后请帮帮我

纳塔莉亚Matviychuk
纳塔莉亚Matviychuk 2019年12月27日
有人知道如何计算细胞质区域(所有区域——核区域)? ?
请帮助我
3评论
图像分析
图像分析 2019年12月28日
我认为你没有试图调整阈值,是吗?看到这段代码,生产:
allreas =
3440 3987
%初始化步骤。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
imtool关闭所有;%关闭所有imtool数字图像处理工具箱。
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 22;
%检查用户安装图像处理工具箱。
hasIPT =许可证(“测试”,“image_toolbox”);
如果~ hasIPT
%用户没有安装工具箱。
消息= sprintf (“对不起,但是你似乎没有图像处理工具箱。\你想继续的?”);
= questdlg(回复消息,“工具箱失踪”,“是的”,“不”,“是的”);
如果strcmpi(回答,“不”)
%的用户说不,所以退出。
返回;
结束
结束
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%读入图像演示。
文件夹= pwd
baseFileName =“37 nt.bmp”;
%得到完整的文件名,路径前缀。
fullFileName = fullfile(文件夹,baseFileName);
如果~存在(fullFileName“文件”)
%没有找到它。检查它的搜索路径。
fullFileName = baseFileName;%没有路径。
如果~存在(fullFileName“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (错误:%年代并不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
grayImage = imread (fullFileName);
%得到图像的尺寸。numberOfColorBands应该= 3。
(行、列,numberOfColorBands) = (grayImage)大小;
如果numberOfColorBands > 1
流(“这是RGB图像。我将改变灰度。\ n”);
grayImage = grayImage (:: 2);
结束
%显示原始图像。
次要情节(1、2、1);
imshow (grayImage);
轴(“上”,“图像”);
标题= sprintf (“原始图像:“% s”,baseFileName);
标题(标题,“字形大小”、字形大小);
impixelinfo;
%全屏放大图。
集(gcf,“单位”,“归一化”,“Outerposition”,(0、0.1、1、0.9),
“名字”,的演示图像分析师”,“NumberTitle”,“关闭”);
%得到灰色的东西。
binaryImage = grayImage > 112 & grayImage < 240;
%显示原始图像。
次要情节(1、2、2);
imshow (binaryImage);
轴(“上”,“图像”);
标题= sprintf (的二进制图像);
标题(标题,“字形大小”、字形大小);
impixelinfo;
%进行面积测量。
道具= regionprops (binaryImage,“区域”);
allreas = [props.Area]
0000年Screenshot.png

登录置评。


纳塔莉亚Matviychuk
纳塔莉亚Matviychuk 2019年12月28日
太太太感谢!请,你能解释我为什么你使用值112和240 ?
binaryImage = grayImage > 112 & grayImage < 240;
1评论
图像分析
图像分析 2019年12月28日
我只是把值在灰色和黑色,灰色和白色。我可以只说
binaryImage = grayImage = = 235;
但图片看起来不像读limage——看起来像计算机图形学。也许你弥补合成图像测试,如果是这样,一个真正的图像将不会只是一个灰色的水平会有一个范围的灰色的水平。所以我把一系列灰色水平,试图让它工作你应该得到一个真正的形象。当然您可以调整这些值然而你需要。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!