R语言 有没有一种方法可以检测和量化图像中物体的缺失区域?

chhkpiq4  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(132)

我正在尝试使用R计算叶片损伤的百分比。我能够使用 pliman 软件包进行图像分割和面积计算,如下所示:https://cran.r-project.org/web/packages/pliman/vignettes/pliman_start.html

我使用下面的R代码。我把一个1厘米的正方形作为参考比例尺。一个样本分割图像可以下载here:

#...........................Load image...........................
library(pliman)

img_segm <- pliman::image_import("C:/Users/sando/Desktop/test/imgseg/imgseg.jpg")

#.........................Analize leaves.........................
layout(t(1:2))
meas <-  analyze_objects(img_segm, index = "BIM", marker = "id", invert= F,show_image=T, parallel=T, watershed= T, fill_hull= F, 
                         tolerance = 30, object_size = "large")
# Measures area in pixels
area1 <-  get_measures(meas)[,c(1,4)]
area1
# Correct the measures using an object in cm
real.area <- get_measures(meas, id = 1, area ~ 1)[,c(1,4)]
real.area

#........................Analize contour.........................
# Draw a convex hull around the objects.
cont_meas <- analyze_objects(img_segm,
                             watershed = T,
                             marker = "id",
                             show_chull = TRUE,index = "BIM", invert= F,show_image=T, parallel=T, fill_hull= F, tolerance = 30, object_size = "large") # shows the convex hull

# Measures area 
real.area2 <- get_measures(cont_meas, id = 1, area ~ 1 )[,c(1,4)]

但是,我无法获得受损区域,并且由于背景为白色,因此无法使用颜色分割。我希望:

  • 分别识别每片叶子
  • 使用某种形式的船体检测或ROI来预测或选择丢失的叶边缘。
  • 计算受损面积(红色)和总面积(叶子+红色)。

我知道做一些二进制转换是可能的,所以我尝试了下面的代码:

#### detect contours in red
library(imager)
img_segm2 <- imager::as.cimg(img_segm)
plot(img_segm2)

# isoblur, greyscale
img_segm3 <- isoblur(grayscale(img_segm2),2) > .60
plot(img_segm3)

px <- img_segm3 > 0.1
ct <- imager::contours(px,nlevels=3)

plot(px)
#Add contour lines
purrr::walk(ct,function(v) lines(v$x,v$y,col="red",lwd=1.5))

有没有什么方法可以让我以半自动的方式获得这些图像?我知道可以在ImageJ和一些软件(如leafbyte或bioleaf)中完成,但我希望能够在R或Python中分析这些图像。感谢您抽出时间。

h4cxqtbf

h4cxqtbf1#

好吧,给你个开始:
https://github.com/brockbrownwork/leaves
稍后我会进一步完善这个答案,但主要结果如下:

输入

输出:第一节第一节第一节第二节第一节
磨损:三点九四七
无磨损孔百分比:百分之五点五八九

编辑:
如果你有一些你将要使用的图片的例子,那将是很有帮助的。主要是我想知道凸包是否能准确地包裹你的叶子,否则我们将不得不使用其他的东西。你是在寻找每一片叶子的统计数据吗?还是仅仅是整体的平均值?你可能必须改变以像素为单位表示叶子最小面积的变量。洞检测也会在叶子的边缘周围包裹一点,这会解决这个问题。

相关问题