आर

2013-06-10 4 views
13

में छवि चिकनाई मैं आर में इस तस्वीर को कैसे सुगम बना सकता हूं, ताकि केवल दो चोटियां रहें?आर

यदि यह 1 डी डेटा होगा, तो मैं एक चलने वाला मतलब करता हूं या इसे एक रिग्रेशन फ़ंक्शन फिट करता हूं। लेकिन मुझे 2 डी मैट्रिक्स पर इन तरीकों को लागू करने के बारे में बहुत विशिष्ट जानकारी नहीं मिली। उदाहरण के लिए मैंने stats पैकेज से उपयोग करने का प्रयास किया।

मैंने भी क्रिगिंग के बारे में सोचा, लेकिन यह इंटरपोलेशन के बारे में अधिक है, है ना?

spectrogram

+0

imageJ उन चीज़ों पर अच्छा है – baptiste

+0

आपको 'रास्टर' पैकेज' पर एक नज़र डालना पड़ सकता है। –

+0

इसके अतिरिक्त, आपका प्रश्न बहुत सारे शोध प्रयास नहीं दिखाता है। आप हमें दिखाते हैं कि आपने क्या प्रयास किया है, और आप जो समझते हैं उसे इंगित करते हैं। अभी आप हमसे अपने लिए काम करने के लिए कह रहे हैं, कम से कम यह कैसा महसूस करता है। –

उत्तर

17

पैकेज spatstat एक समारोह blur() कि एक गाऊसी कलंक applicates रखती है। यह तस्वीर को एक तरह से smothes, कि ज्यादातर शोर गायब हो जाता है और दो मुख्य चोटियों स्पष्ट रूप से स्पष्ट हैं।

प्रभाव निम्नलिखित तस्वीर में देखा जा सकता है और यह काफी उल्लेखनीय है, खासकर 3 डी प्लॉट में।

effects of blurring

कोड चित्र उत्पन्न करने के लिए किया गया था:

library(jpeg) 
library(fields) 
library(spatstat) 

picture <- readJPEG("~/Downloads/spectrogram.png.jpeg") 
picture2 <- as.matrix(blur(as.im(picture), sigma=6)) 

layout(matrix(c(1:4), nrow=2)) 
image.plot(picture, col=gray.colors(50), main="original image", asp=1) 
image.plot(picture2, col=gray.colors(50), main="blurred with sigma = 6", asp=1) 
drape.plot(1:nrow(picture), 1:ncol(picture), picture, border=NA, theta=0, phi=45, main="original spectrogram") 
drape.plot(1:nrow(picture), 1:ncol(picture), picture2, border=NA, theta=0, phi=45, main="blurred with sigma = 6") 
+0

क्या आप जानते हैं कि यह यहां क्यों काम नहीं करता है? 'rawimg = readJPEG (" church.jpg ") rawimg = t (rawimg) # rawimg = t (धुंध (as.im (rawimg), सिग्मा = 6)) rawimg = rawimg [, ncol (rawimg): 1 ] 'मुझे यह त्रुटि प्राप्त होती है:' त्रुटि ['im' (rawimg,, ncol (rawimg): 1): इस प्रकार के इंडेक्स ' –

+0

के लिए सबसेट ऑपरेशन अपरिभाषित है यदि आपके पास काला और सफेद नहीं है छवि, आपकी छवि तीन matrices की एक सूची होगी, प्रत्येक आरजीबी (लाल, हरा और नीला) के एक चैनल के लिए। इसलिए आप टी() कमांड का उपयोग नहीं कर सकते हैं। – nnn

11

मुझे लगता है कि आप रेखापुंज पैकेज में focal समारोह पर एक नजर है चाहिए। उदाहरण (raster प्रलेखन से नकल) के लिए:

r <- raster(ncols=36, nrows=18, xmn=0) 
r[] <- runif(ncell(r)) 
# 3x3 mean filter 
r3 <- focal(r, w=matrix(1/9,nrow=3,ncol=3)) 

प्रलेखन अधिक विवरण शामिल हैं।

+0

ठीक है, यह भी ऐसा करेगा। यह मेरा पहला विचार था जैसे चलने का मतलब था। लेकिन गॉस ब्लर बेहतर परिणाम देता है। लेकिन वैसे भी जवाब के लिए धन्यवाद। – nnn

+0

यह मेरे लिए पूरी तरह से काम करता है! :) – maycca

7

आप निश्चित रूप से EBImage पैकेज पर एक नज़र डालना चाहते हैं। आपकी छवि को चिकनाई करने के लिए कई फ़ंक्शन हैं।

उदाहरण के लिए, एक मंझला फिल्टर:

# Load EBImage up 
require(EBImage) 
# Read in your image 
im = readImage('/path/to/your/image') 
# Apply a median filter with window size of 7 
im.med = medianFilter(im, size=7) 
# Display image 
display(im.med) 

Median filter applied with 7x7

या आप एक गाऊसी कलंक की कोशिश कर सकते:

# Apply a gaussian blur with sigma=4 
im.gaus = gblur(im, sigma=4) 
# Display image 
display(im.gaus) 

enter image description here

आशा इस मदद करता है!

+1

यह यह भी करेगा, जैसे 'स्पैटस्टैट' पैकेज में गॉस ब्लर या 'रास्टर' पैकेज में चलने का मतलब। मुझे गॉस ब्लर बेहतर पसंद है, क्योंकि औसत फ़िल्टर प्रकार की ऊर्ध्वाधर और क्षैतिज पट्टियां बनाता है। जवाब के लिए धन्यवाद। यह जानकर अच्छा लगा कि मैंने जो खोजा है उसे हासिल करने के कई तरीके हैं! – nnn

+0

@ by0 अगर मुझे यह त्रुटि मिलती है तो मुझे क्या करना चाहिए? '> install.packages (" EBImage ") install.packages में चेतावनी: पैकेज 'EBImage' उपलब्ध नहीं है (R संस्करण 3.0.2 के लिए)' –

+1

क्या आप CRAN से 'EBImage' इंस्टॉल करने का प्रयास कर रहे हैं? '.p.pages ('EBImage') 'इंस्टॉल न करें, इसके बजाए इसे बायोकॉन्डक्टर से इस स्रोत ("http://bioconductor.org/biocLite.R") से इंस्टॉल करें; biocLite ("EBImage") ' – by0