如何选择基于该算法的ROI。或者我可以从这段只有骨头的部分图片。
2视图(30天)
显示旧的评论
算法:
1。开始
2。读输入图像,我
3所示。调整我输入图像,通过规模0.15的
调整大小Iresized形象。
4所示。应用首先进行图像分割[14],Iresized。
5。计算每个地区的面积阈值图像,
Iotsu。
6。选择面积最大的地区的投资回报率。
7所示。计算它的倾向。
8。正确的骨的倾向使用公式
8.1。如果骨头向右倾斜,然后这是旋转
在由一个角等于逆时针方向
”90 -角”(即Anglecorrected = 90 - Angleoriginal)
8.2。但如果骨头是倾向于左边,然后它是
旋转顺时针方向的一个角等于
”90 -角”(例如Anglecorrected = - 90
Angleoriginal)。在这里,将获得的价值
负的。这表示应的形象
旋转顺时针方向。
9。的新获得的图像是Irot。下一个,坐标的
的区域的边界框的最大区域
以上图像。
10。使用这些坐标包含骨的一个矩形
区域(ROI)Irot裁剪的图像。新
图像获得Icrop,这是最后的预处理
图像Inew。
11。停止
这个结果的样本所示结果。png(根据一篇文章:https://pdfs.semanticscholar.org/8ea1/eeea2f00c58a6a9a959355d6cc8eebf686cd.pdf)。我想要相同的图像,我的数据库的样本图像是12490年,2425年和8823年。我尝试以下代码到第9步。
我= imread (“12493. png”);
J = imresize(我,0.5);
imshow (J);
水平= graythresh (J);%全球形象使用大津阈值的方法
BW = imbinarize (J、水平);
imshowpair (J, BW,“蒙太奇”)
blobMeasurements = regionprops (BW,“区域”);%二进制图像中对象的领域
%的所有领域
allAreas = [blobMeasurements.Area];
[sortedAreas, sortIndexes] =排序(allAreas,“下”);
numberToExtract = 1;
biggestBlob = ismember (BW sortIndexes (1: numberToExtract));
imshow (biggestBlob);%马克斯ROI
统计= regionprops (BW,“定位”);%的倾向
Angleoriginal = (1) .Orientation统计数据;
如果Angleoriginal < 90
Anglecorrected = 90 - Angleoriginal;
其他的
Anglecorrected = -90 - Angleoriginal;
结束
I_rot = ismember (biggestBlob Anglecorrected);
imshow (I_rot);%我腐烂图像(第9步)
现在我得到一个黑色的平方第9步后输出在这个阶段吗?我已经错误和如何进一步继续. .
答案(4)
Constantino教授卡洛斯Reyes-Aldasoro
2018年7月20日
一个问题,我没有labeledImage
biggestBlob = ismember (labeledImage sortIndexes (1: numberToExtract));
未定义的labeledImage的函数或变量。
Guillaume
2018年7月20日
现在我得到一个黑色的平方第9步后输出在这个阶段吗?
嗯,难怪你考虑到第9步是:
I_rot = ismember (biggestBlob Anglecorrected);
这完全没有道理。我甚至不能开始理解为什么你会认为
ismember
将是有用的。
如果你想实现一个旋转:
I_rot = imrotate (biggestBlob Anglecorrected);