2012-01-12 16 views
5

मुझे आर के साथ आंकड़े मंच के रूप में कुछ अनुभव है, लेकिन छवि आधारित गणित में अनुभवहीन हूं। मेरे पास छेद और अनियमित घटता के साथ फोटोग्राफ की एक श्रृंखला है (टिफ़ प्रारूप, पीएक्स/माइक्रोन ज्ञात है)। मैं उस छेद के बीच सबसे छोटी दूरी और उस विशेष छेद के निकटतम वक्र को मापना चाहता हूं। मैं एक तस्वीर में प्रत्येक छेद के लिए यह करना चाहता हूँ। छेद नियमित रूप से नियमित नहीं होते हैं, इसलिए शायद मुझे प्रोग्राम को बताना होगा कि छेद क्या हैं और वक्र क्या हैं (छविजे में एक बिंदु और सेगमेंट लाइन फ़ंक्शन हैं)।आर/छविजे: अंक और घटता के बीच सबसे छोटी दूरी मापना

कोई विचार यह कैसे करना है? आर में मुझे किस पैकेज का उपयोग करना चाहिए? क्या आप इस तरह के कार्य के लिए एक और कार्यक्रम की सिफारिश करेंगे?

Example image

+2

मेरे सिर के ऊपर से, मैं पहले ImageJ के साथ जाऊंगा। मैं उस उपकरण के साथ एक विशेषज्ञ नहीं हूं लेकिन यह स्पॉट खोजने और उनके साथ चीजों को करने में अच्छा लगता है। –

+0

यह हो सकता है कि इस कार्य के लिए बायो 7 अच्छा हो सकता है। वहाँ कोई बायो 7 गुरु? कार्यक्रम इतना करता है कि यह पता लगाना मुश्किल है कि यह वास्तव में क्या करता है =) – Mikko

उत्तर

2

संपादित करें: ऐसा करना अब स्क्लेरो पैकेज का उपयोग करना संभव है। पैकेज वर्तमान में GitHub पर उपलब्ध है और प्रक्रिया को the tutorial में विस्तार से वर्णित किया गया है। बस वर्णन करने के लिए, मैं ट्यूटोरियल से एक उदाहरण का उपयोग करें:

library(devtools) 
install_github("MikkoVihtakari/sclero", dependencies = TRUE) 
library(sclero) 
path <- file.path(system.file("extdata", package = "sclero"), "shellspots.zip") 
dat <- read.ijdata(path, scale = 0.7812, unit = "um") 
shell <- convert.ijdata(dat) 
aligned <- spot.dist(shell) 
plot(aligned) 

enter image description here

यह भी नमूना स्थान आकार sclero पैकेज द्वारा प्रदान कार्यों का उपयोग कर जोड़ने के लिए संभव है। ट्यूटोरियल में धारा 2.5 देखें।

1

बढ़त का पता लगाने छवि जम्मू मदद कर सकता है कि आप पहले छेद और लाइनों मिल जाए, और उन्हें स्पष्ट के लिए लिखा के लिए एक उपकरण नहीं है। आप tresholding और हिस्टैरिसीस क्रम लाइनों और छेद पाया प्राप्त करने के लिए मदद कर सकते हैं के लिए सेटिंग्स के साथ चारों ओर खेलने

http://imagejdocu.tudor.lu/doku.php?id=plugin:filter:edge_detection:start

पर यह पाते हैं। यह बताने में मुश्किल है कि क्या आपकी वास्तविक तस्वीरों को देखे बिना काम करने का अधिक मौका है, लेकिन मेरे एक सहयोगी के पास एफआरपी छवियों पर इस टूल का उपयोग करके अच्छे परिणाम थे। मैंने एक छविजे उपकरण प्रोग्राम किया जो उन छवियों के आधार पर FRAP विश्लेषण में पुनर्प्राप्तियों की गणना कर सकता है। कोड को देखते समय आपको अपने लिए कुछ विचार मिल सकते हैं (देखें: http://imagejdocu.tudor.lu/doku.php?id=plugin:analysis:frap_normalization:start)

एकमात्र तरीका जो मुझे पता है कि आप छवियों के साथ काम कर सकते हैं, EBImage का उपयोग करके बायोकॉंडक्टर सिस्टम में निहित है। पैकेज Rimage अनाथ है, इसलिए अब बनाए रखा नहीं गया है।

सबसे छोटी दूरी खोजने के लिए: एक बार जब आप लाइनों और छेद के निर्देशांक प्राप्त कर लेते हैं, तो आप शॉटगन दृष्टिकोण के लिए जा सकते हैं: सभी बिंदुओं और रेखाओं के बीच की दूरी की गणना करें, और फिर न्यूनतम लें। आर में इस बारे में एक उदाहरण:

x <- -100:100 
x2 <- seq(-70,-50,length.out=length(x)/4) 

a.line <- list(x = x, 
       y = 4*x + 5) 

a.hole <- list(
    x = c(x2,rev(x2)), 
    y = c(200 + sqrt(100-(x2+60)^2), 
     rev(200 - sqrt(100-(x2+60)^2))) 
) 

plot(a.line,type='l') 
lines(a.hole,col='red') 

calc.distance <- function(line,hole){ 

    mline <- matrix(unlist(line),ncol=2) 
    mhole <- matrix(unlist(hole),ncol=2) 

    id1 <- rep(1:nrow(mline),nrow(mhole)) 
    id2 <- rep(1:nrow(mhole), each=nrow(mline)) 

    min(
    sqrt(
     (mline[id1,1]-mhole[id2,1])^2 + 
     (mline[id1,2]-mhole[id2,2])^2 
    ) 
) 
} 

तब:

> calc.distance(a.line,a.hole) 
[1] 95.51649 

जो तुम सर्कल और लाइन से समीकरण पाने से गणितीय देख सकते हैं। यदि आपके पास हजारों लाइनों और छेदों का वर्णन करने वाले लाखों अंक नहीं हैं तो यह तेज़ी से पर्याप्त हो जाता है।

+0

सहायक उत्तर जोरीस के लिए धन्यवाद! मैंने एक वास्तविक तस्वीर के साथ चित्रण को बदल दिया। मैंने आपकी प्लगइन की कोशिश की, लेकिन संदेह है कि यह लाइनों को अलग कर सकता है, जिसे मैंने लाल रंग से चिह्नित किया है।क्या आप जानते हैं, यदि अंक और रेखाओं को मैन्युअल रूप से परिभाषित करना संभव है और फिर उन्हें ईबीआईमेज में आयात करना संभव है? – Mikko

+1

@ लार्ग: वास्तव में, उस तस्वीर में उन पंक्तियों को ढूंढना भूल जाओ। आप मैन्युअल रूप से ImageJ में भी ऐसा कर सकते हैं और फिर उन पंक्तियों के निर्देशांक को एक CSV फ़ाइल में निर्यात कर सकते हैं। वह फ़ाइल जिसे आप आर के साथ पढ़ सकते हैं सर्कल के लिए (जो एजडेटेक्शन आसानी से मिलना चाहिए)। मुझे अपने सिर के शीर्ष से याद नहीं है कि छविजे में ऐसा कैसे किया जाए, यह कुछ सालों से रहा है क्योंकि मैं इसके साथ काम कर रहा हूं, लेकिन बर्ज और बर्गर बुक (जो उत्कृष्ट है: http: //www.imagingbook .com /) और उनके पास एक छविजे ट्यूटोरियल भी है। इसके अलावा, वेब पर इस पर बहुत सारी जानकारी है। –

+0

फिर से धन्यवाद जोरीस। मुझे आश्चर्य है कि पिक्सेल सूचना खोने के बिना छविजे या ईबीएममेज से आर तक बिंदु और विभाजित लाइन जानकारी को स्थानांतरित करने के लिए (या फिर स्थानांतरण से पहले पिक्सेल को μm में परिवर्तित करना)। बायो 7 शायद यह कर सकता है, लेकिन यह उपयोग करने के लिए बहुत जटिल है (क्लिक करने के बहुत सारे)। – Mikko