예제 #1
0
	def setCanvas(self, astroIm, update=False):
		#Raster Main image
		self.internalAstroImg = astroIm
		self.imageTK = self.internalAstroImg.getImageTK()
		print "\n\nINFO"
		print self.internalAstroImg.statisticalInfo()
		self.staMeanValue.config(text = str('%.2f' % self.internalAstroImg.statisticalInfo()[0]))
		self.staStdValue.config(text = str('%.2f' % self.internalAstroImg.statisticalInfo()[1]))
		self.staNCandidatesStarsValues.config(text = str(self.internalAstroImg.starCandidates))
		self.staNStarsValues.config(text = str(len(self.internalAstroImg.lCandidates)))
		self.staAreaGalaxiesValues.config(text = str('%.2f' % self.internalAstroImg.contourMeanArea))
		self.staNGalaxiesValues.config(text = str(len(self.internalAstroImg.nContours)))
		print "\n\n"
		self.canvasImg = self.canvas.create_image(0,0,  image=self.imageTK)
		self.imgConfigure()

		#Histogram
		self.histogramFrame = tk.LabelFrame(self.tabProcessing, text="Histogram")
		self.histogramFrame.grid(column=1,row=2, padx=5, columnspan=5)

		#Vector
		self.imageVector = self.internalAstroImg.getVectorImage()
		self.vectorImage = self.vectorCanvas.create_image(336,336, image = self.imageVector)

		if (update==False):
			self.matPlotHistogram = MatPlotHistogram(self.histogramFrame, self.internalAstroImg.getHistogram())
			#Raster thumbnails
			self.thumbDarkAstro = self.internalAstroImg.getThumb("dark")
			self.thumbDarkImage = self.miniCanBlack.create_image(50,50,  image=self.thumbDarkAstro)

			self.thumbDifusseAstro = self.internalAstroImg.getThumb("difusse")
			self.thumbDifusseImage = self.miniCanDifusse.create_image(50,50,  image=self.thumbDifusseAstro)

			self.thumbPeakAstro = self.internalAstroImg.getThumb("peak")
			self.thumbPeakImage = self.miniCanPeak.create_image(50,50,  image=self.thumbPeakAstro)

			#Calculate background:
			blackMedian, nIter = cvSpace.sky_median_sig_clip(self.internalAstroImg.imageCVOriginal, 5, 0.1, max_iter=20)
			self.fluxDarkIndex.config(text = str(blackMedian))
			self.fluxPeakIndex.config(text = str(int(self.internalAstroImg.peakThreshold)))
			print "blackMedian: "+str(blackMedian)+" nIter: "+str(nIter)
			self.thumbDarkAstro = self.internalAstroImg.modifyThumb(thumb= "DARK", value = blackMedian)
			self.miniCanBlack.itemconfigure(self.thumbDarkImage, image=self.thumbDarkAstro)
			#Draw line on histogram
			self.matPlotHistogram.setLine(blackLine = int(blackMedian))
			#TODO: change for the median of the subHistogram from blackMedian to self.internalAstroImg.peakThreshold
			tempDiffuseLine = int(blackMedian+self.internalAstroImg.peakThreshold/2)
			if (tempDiffuseLine>self.internalAstroImg.peakThreshold*0.9):
				tempDiffuseLine = tempDiffuseLine * 0.85
			tempDiffuseLine = self.matPlotHistogram.getMedianOfSubset(blackMedian, self.internalAstroImg.peakThreshold)
			self.matPlotHistogram.setLine(difusseLine = tempDiffuseLine)
			self.fluxDifusseIndex.config(text = str(tempDiffuseLine))
			self.matPlotHistogram.setLine(peakLine = int(self.internalAstroImg.peakThreshold))
예제 #2
0
	candidato = detector.detect(img)
	print "[getIntersetObjectList] hay un total de "+str(len(candidato))+" candidatos"
	return candidato

def cutImage(img, center, r=32):
	#cv2.circle(img, (int(center.pt[0]),int(center.pt[1])), 10, (255,255,0))
	return img[int(center.pt[1]-r):int(center.pt[1]+r), int(center.pt[0]-r):int(center.pt[0]+r)]
	
#im = cv2.imread("miniSetEstrellayGalaxia.png", cv2.IMREAD_GRAYSCALE)
im = cv2.imread("o-HUBBLE-UV-900.jpg", cv2.IMREAD_GRAYSCALE)
im2 = im.copy()
print "Tipo de la imagen: "+str(type(im))
print "#############################"
sig_fract = 5
percent_fract = 0.01
skyMedian, nIter = cvSpace.sky_median_sig_clip(im, sig_fract, percent_fract, max_iter=200)
print "skeMedian: "+str(skyMedian) + " iterations: "+str(nIter)
print "#############################"

keyPoints = getIntersetObjectList(im)
print "Punto y coordenada:"
print str(type(keyPoints))
resultado = cv2.drawKeypoints(im, keyPoints, np.array([]), (255,255,0), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
resultado = im
#for item in keyPoints:
	#print str(item.pt[0])+", "+str(item.pt[1])
	#cv2.circle(resultado, (int(item.pt[0]),int(item.pt[1])), 5, (255,255,0))
print "Tomamos el primero"
cualStar = 1
print str(keyPoints[cualStar].pt[0])+", "+str(keyPoints[cualStar].pt[1])
for i in range(1, 64, 1):
예제 #3
0
	def updateImage(self, scaleFactor=1):
		print "[AstroImage::updateImage] self.scaleFactor: "+str(self.scaleFactor)
		self.imagePil = Image.fromarray(self.imageCV)
		self.imageTK = ImageTk.PhotoImage(image=self.imagePil)
		self.histogram = self.updateHistogram()
		(self.staMean, self.staStd) = cv2.meanStdDev(self.imageCV)
		self.staMean = self.staMean[0][0]
		self.staStd = self.staStd[0][0]
		print ">>>>>>>>>>Mean>>>  "+str(self.staMean)
		print ">>>>>>>>>>Std>>>>  "+str(self.staStd)
		print "[AstroImage::updateImage] calling to cvSpace.getContours"
		#################################OBTENCION####################################
		############################## getContours ###################################
		#################### obtencion de candidatos contornos #######################
		blackMedian, nIter = cvSpace.sky_median_sig_clip(self.imageCVOriginal, 5, 0.1, max_iter=20)
		self.darkImage = self.generateDarkImage(blackMedian)
		print "Linea de Espacio Vacio: "+str(blackMedian)
		self.nContours, self.contourMeanArea = cvSpace.getContours(cv2.convertScaleAbs(self.darkImage))
		self.nContours = cvSpace.removeContourInsideContour(self.nContours)
		print "[AstroImage::updateImage] calling to cvSpace.getObjectList"
		#################################OBTENCION####################################
		###############################getObjectList##################################
		################# obtencion de candidatos ptos Luminosos #####################
		temp8bit = cv2.convertScaleAbs(self.imageCV)
		self.peakThreshold, self.lCandidates, self.peakCVImage, self.starCandidates = cvSpace.getObjectList(temp8bit, self.darkImage)#, debug = True)#self.imageCV)
		self.thumbPeak = ImageTk.PhotoImage(Image.fromarray(cv2.resize(self.peakCVImage, (100, 100))))
		
		print "[AstroImage::updateImage] Preparing vector canvas"
		#########################DRAW INTEREST POINTS AND CONTOURS####################
		#self.contourImage = cv2.cvtColor(cv2.convertScaleAbs(self.darkImage).copy(), cv2.COLOR_GRAY2RGB)
		self.contourImage = cv2.cvtColor(cv2.convertScaleAbs(self.imageCV).copy(), cv2.COLOR_GRAY2RGBA)
		
		print "\n\n-------------------------"+str(len(self.lCandidates))+"---------------------------\n"
		for k in self.lCandidates:
			if k[3] == 0:#Estimated Galaxi point
				cv2.circle(self.contourImage, (int(k[0]),int(k[1])), k[2], (255,0,0,255),-1)
			if k[3] == 1:#Extimated Star or galaxy point
				cv2.circle(self.contourImage, (int(k[0]),int(k[1])), k[2], (0,255,0,250),-1)
			if k[3] == 0:#Start Point
				cv2.circle(self.contourImage, (int(k[0]),int(k[1])), k[2], (255,0,0,250),-1)
					
		index = 0
		self.galaxiCenters = np.array([[-1,-1]])
		print "[AstroImage::updateImage] Rasterizing vector data from contours"
		for c in self.nContours:
			cR = np.random.randint(0,255)
			cB = np.random.randint(100,255)
			cG = np.random.randint(150,255)
			color = (cR, cB, cG, 255)
			cv2.drawContours(self.contourImage, self.nContours, index, color, 3)
			height, width = self.imageCV.shape
			tempMaks = cvSpace.getMaskFromContour(c, width, height)
			tempIMG = cvSpace.maskImage(self.imageCV, tempMaks)
			tempCenter = cvSpace.getGalaxyCenter(tempIMG)
			cv2.rectangle(self.contourImage, (tempCenter[0]-5,tempCenter[1]-5), (tempCenter[0]+5,tempCenter[1]+5), (255,215,0,255), -1)
			cv2.rectangle(self.contourImage, (tempCenter[0]-5,tempCenter[1]-5), (tempCenter[0]+5,tempCenter[1]+5), (0,0,0,255))
			#print "_______________________________________________________"
			#print "Centro de la galaxia: "+str(tempCenter[0])+", "+str(tempCenter[1])
			#print "_______________________________________________________"
			self.galaxiCenters = np.append( self.galaxiCenters, [[tempCenter[0],tempCenter[0]]], axis=0 )
			index = index + 1
		self.galaxiCenters = np.delete(self.galaxiCenters, 0, axis = 0)				
		print "Number of contours: "+str(len(self.nContours))+" vs "+str(len(self.galaxiCenters))+" ##############"