r राइटर ब्लैक रंग रेखापुंज छवि पहचानने



image image-processing (1)

यह बहुत अच्छी तरह से परिभाषित नहीं है क्योंकि इस मामले में रंग आरजीबी मूल्यों से बना है लेकिन यहां एक सामान्य समाधान है जिसे आप अनुकूलित कर सकते हैं मैं औसत ले कर एक चैनल में इन्हें 'समतल' करता हूं, और फिर सीमा पर नीचे के न्यूनतम मूल्य (सफेद 255, 255, 255 आरजीबी में, काले 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)

(jbaams समाधान देखने के बाद बहुत सुधार हुआ, जो अब चला गया है)

नीचे दिए गए कोड मेरी छवि पर दो बक्से उत्पन्न करता है I मैं उन बक्से के भीतर पिक्सेल का विश्लेषण करने की योजना बना रहा हूं।

मैं एक शर्त रखना चाहता हूं कि यदि एक बॉक्स के किनारे के साथ, एक काला रंग (या एक समान रंग जैसे ग्रे) पिक्सेल होता है तो आगे बढ़ना नहीं है। मैं ऐसी स्थिति कैसे निर्दिष्ट कर सकता हूं?

नीचे उदाहरण में, लाल वर्ग के मामले में मैं आगे बढ़ना नहीं चाहता क्योंकि इसके ऊपर दायें हाथ के कोने पर काली पिक्सेल है हालांकि मैं ग्रीन स्क्वायर के मामले में आगे बढ़ना चाहता हूं क्योंकि इसके किनारे पर काली रंग पिक्सेल नहीं है।

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)




raster