簡體   English   中英

識別黑色光柵圖像的R光柵

[英]R raster recognizing black color raster image

下面的代碼在我的圖像上產生兩個框。 我打算進一步分析這些框中的像素。

我想提出一個條件,如果沿着盒子的邊緣,有黑色(或類似的顏色,如灰色)像素,則不要繼續。 如何指定這種條件?

在下面的示例中,在紅色正方形的情況下,由於它在右上角具有黑色像素,因此我不想進一步進行操作。 雖然我想在綠色正方形的情況下繼續進行操作,因為它的邊緣沒有黑色像素。

library(raster)
r1 <- brick(system.file("external/rlogo.grd", package="raster"))
x <- crop(r1, extent(0,50,0,50))
plotRGB(x)
plot(extent(c(0,20,0,20)), lwd=2, col="red", add=TRUE)
plot(extent(c(21,35,0,10)), lwd=2, col="Green", add=TRUE)

定義不是很好,因為在這種情況下顏色是由RGB值組成的。 但是,這是您可以適應的一般解決方案。 我通過取平均值將它們“展平”到單個通道,然后在邊界處測試最小值是否低於閾值(白色是255、255、255,RGB是0、0、0)

proceed <- function(f, e, threshold) {
    lns <- as(as(e, 'SpatialPolygons'), 'SpatialLines')
    v <- unlist(extract(f, lns))
    ifelse( min(v, na.rm=TRUE) < threshold, FALSE, TRUE)
}

# flat <- mean(x) # not sophisticated see
# http://stackoverflow.com/questions/687261/converting-rgb-to-grayscale-intensity
flat <- sum(x * c(0.2989, 0.5870, 0.1140))
proceed(flat, extent(c(0,20,0,20)), 100)
proceed(flat, extent(c(21,35,0,10)), 100)

(在看到jbaums的解決方案之后有了很大的改進;現在已經消失了)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM