आर

2013-02-08 40 views
5

का उपयोग कर किसी छवि से पिक्सेल डेटा कैसे प्राप्त करें, क्या कोई मुझे आर में किसी छवि से आरजीबी पिक्सेल डेटा कैसे प्राप्त करने में मदद कर सकता है?आर

मुझे इस जानकारी की आवश्यकता है कि पक्षियों की पंखों में अंतर की तुलना में एक प्रजाति की समझ में सहायता करें।

मेरी तस्वीरें डिजिटल कैमरे द्वारा ली जाती हैं और अब एनईएफ-फाइल के रूप में हैं। इससे कोई फ़र्क नहीं पड़ता कि किस प्रकार की फ़ाइल की आवश्यकता है, मेरे पास फ़ाइल को जो कुछ भी मैं चाहता हूं उसे कनवर्ट करने की संभावना है। हालांकि, मैं फ़ाइल में यथासंभव अधिक से अधिक जानकारी को बनाए रखना पसंद करूंगा (i। ई। पीएनजी-फाइलें अच्छी हैं)।

मैंने आर: पिक्समैप, रास्टर, इमेजमैट्रिक्स में कई पैकेजों की कोशिश की है और इस समस्या को हल करने की कोशिश कर रहे कई हफ्तों तक इंटरनेट, परीक्षण विधियों, सह-छात्रों आदि से ब्राउज किया है। यहां स्टैक ओवरफ्लो पर मैंने कोशिश की है: How to extract the pixel data Use R's pixmap package?, बिना किसी किस्मत के। आर फाइलों के लिए मेरी फ़ाइलें भी बहुत बड़ी हैं (पूरी सरणी नहीं दिखाती है), और मुझे उत्पादित सरणी को समझने में कठिनाइयां हैं। मेरे लिए सबसे अच्छी बात यह है कि डेटा को मैट्रिक्स के रूप में प्राप्त करना होगा या किसी अन्य तरीके से यह समझना आसान होगा कि क्या है। मुझे इसी तरह के प्रश्नों का भार मिला है, लेकिन अन्य प्रोग्राम्स (जैसे जावा, सी ++, आईओएस, मैटलैब, पायथन आदि) में जो दुर्भाग्य से मुझे नहीं पता कि इसका उपयोग कैसे किया जाए।

मेरी समस्याएं इस प्रकार के काम के साथ मेरे कम कौशल के कारण हो सकती हैं, लेकिन मैं जितनी मेहनत कर सकता हूं उतनी मुश्किल कोशिश कर रहा हूं। अगर कोई मेरी मदद कर सकता है या मुझे कुछ सुझाव दे सकता है, तो मैं बहुत आभारी रहूंगा।

+2

आपका मतलब "कोई भाग्य" नहीं है? कोहस्के ने आपके [पिछले प्रश्न] (http://stackoverflow.com/questions/6085090/how-to-extract-the-pixel-data-use-rs-pixmap-package) का बहुत अच्छा जवाब दिया है। थोड़ा और विस्तार में बताओ। क्या आपने अपना समाधान अनुकूलित करने की कोशिश की है? यह क्यों काम नहीं करता है? – Andrie

+0

यदि आप ओएस एक्स तक पहुंच प्राप्त कर चुके हैं तो आप शायद ImageJ (या यहां तक ​​कि ग्राफिक कनवर्टर का उपयोग करके बहुत खुश होंगे)। इस बीच, यह मानते हुए कि चिड़ियाघर केवल छवि का हिस्सा शामिल करते हैं, उस डेटा के आकार को कम करने के लिए सरणी सबसेट निकालें, जिसके साथ आप मिल रहे हैं। –

+0

@Andrie, मुझे यह देखने के लिए खेद है, जैसा कि आप मेरे संपादन में देख सकते हैं, मैंने गलत समझा है कि मैं क्या कर रहा था। हालांकि, यदि आप रुचि रखते हैं, तो मुझे यह त्रुटि संदेश बिल_080 उत्तर का परीक्षण करने का प्रयास कर रहा है: चित्र @ आकार "त्रुटि: किसी स्लॉट के साथ मूल वर्ग (" सरणी ") के किसी ऑब्जेक्ट से स्लॉट" आकार "प्राप्त करने का प्रयास करें" – MariaBioStudent

उत्तर

7

सबसे पहले मैं एक उदाहरण उत्पन्न png छवि:

png("/tmp/test.png") 
plot(rnorm(100)) 
dev.off() 

तो मैं इसे एक प्रारूप pixmap द्वारा पठनीय में बदलने का: यहाँ मैं एक पीपीएम फाइल करने के लिए png कन्वर्ट के रूप में मैं रंग जानकारी रखना चाहते हैं। मैं कमांड लाइन से ImageMagick उपयोग, लेकिन आप उपयोग कर सकते हैं जो कुछ भी कार्यक्रम आप चाहते हैं:

$ convert /tmp/test.png /tmp/test.ppm 

इसके बाद, आप pixmap पैकेज से read.pnm समारोह के साथ छवि पढ़ सकते हैं:

x <- read.pnm("/tmp/test.ppm") 

और फिर, आप मैट्रिक्स के रूप में प्रत्येक चैनल के लिए पिक्सेल मान प्राप्त करने के लिए [email protected], [email protected], [email protected] स्लॉट (या [email protected] एक ग्रेस्केल छवि के लिए) का उपयोग कर सकते हैं। आप देख सकते हैं कि मैट्रिक्स के आयामों अपने चित्र का आकार के रूप में ही कर रहे हैं:

dim([email protected]) 
[1] 480 480 
+0

धन्यवाद, अब मुझे यकीन है कि मैं सही रास्ते पर हूं! :) – MariaBioStudent

+0

यदि यह आपका प्रश्न हल करता है, तो आप इसे अन्य उपयोगकर्ताओं को इंगित करने के लिए हरे रंग के निशान की जांच कर सकते हैं। – juba

1

इस छोटे नमूना 3x3 पिक्सेल png छवि डालें:

sample image

तब:

library('png') 
download.file('http://i.stack.imgur.com/hakvE.png', 'sample.png') 
img <- readPNG('sample.png') 
pix.top.left <- img[1,1,]  # row 1, column 1 
pix.bottom.left <- img[3,1,] # row 3, column 1 
pix.top.right <- img[1,3,] # row 1, column 3 

यदि आप अल्फा चैनल (ऊपर नमूना छवि के रूप में) के साथ एक पीएनजी छवि पढ़ रहे हैं, तो pix. चर प्रत्येक में चार प्रविष्टियों वाला एक वेक्टर है , पिक्सेल के लाल, हरे, नीले और अल्फा मानों से संबंधित प्रत्येक प्रविष्टि।

> pix.top.left 
[1] 1 0 0 1