http://www.mediawiki.org/wiki/Special:Code/pywikipedia/11180
Revision: 11180
Author: drtrigon
Date: 2013-03-05 19:24:16 +0000 (Tue, 05 Mar 2013)
Log Message:
-----------
bug fix; LinAlgError: SVD did not converge (which should not happen in fact)
Modified Paths:
--------------
trunk/pywikipedia/catimages.py
Modified: trunk/pywikipedia/catimages.py
===================================================================
--- trunk/pywikipedia/catimages.py 2013-03-04 14:10:51 UTC (rev 11179)
+++ trunk/pywikipedia/catimages.py 2013-03-05 19:24:16 UTC (rev 11180)
@@ -639,23 +639,27 @@
#pywikibot.output( u'FFT_Comp: %s %s' % (1.-float(i*i)/(s[0]*s[1]),
peaks) )
# svd
- U, S, Vh = linalg.svd(np.matrix(gray))
- #U, S, Vh = linalg.svd(np.matrix(fft)) # do combined 'svd of fft'
- SS = np.zeros(s)
- ss = min(s)
- for i in range(0, len(S)-1, max( int(len(S)/100.), 1 )): #
(len(S)==ss) -> else; problem!
- #SS = np.zeros(s)
- #SS[:(ss-i),:(ss-i)] = np.diag(S[:(ss-i)])
- SS[:(i+1),:(i+1)] = np.diag(S[:(i+1)])
- #Image.fromarray(np.dot(np.dot(U, SS), Vh) - gray).show()
- #if ((np.dot(np.dot(U, SS), Vh) - gray).max() >= (255/4.)):
- if ((np.dot(np.dot(U, SS), Vh) - gray).max() < (255/4.)):
- break
- #data['SVD_Comp'] = 1.-float(i)/ss
- data['SVD_Comp'] = float(i)/ss
- data['SVD_Min'] = S[:(i+1)].min()
- #pywikibot.output( u'SVD_Comp: %s' % (1.-float(i)/ss) )
- #pywikibot.output( u'SVD_Comp: %s %s %s' % (float(i)/ss,
S[:(i+1)].min(), S[:(i+1)].max()) )
+ try:
+ U, S, Vh = linalg.svd(np.matrix(gray))
+ #U, S, Vh = linalg.svd(np.matrix(fft)) # do combined 'svd of
fft'
+ SS = np.zeros(s)
+ ss = min(s)
+ for i in range(0, len(S)-1, max( int(len(S)/100.), 1 )): #
(len(S)==ss) -> else; problem!
+ #SS = np.zeros(s)
+ #SS[:(ss-i),:(ss-i)] = np.diag(S[:(ss-i)])
+ SS[:(i+1),:(i+1)] = np.diag(S[:(i+1)])
+ #Image.fromarray(np.dot(np.dot(U, SS), Vh) - gray).show()
+ #if ((np.dot(np.dot(U, SS), Vh) - gray).max() >= (255/4.)):
+ if ((np.dot(np.dot(U, SS), Vh) - gray).max() < (255/4.)):
+ break
+ #data['SVD_Comp'] = 1.-float(i)/ss
+ data['SVD_Comp'] = float(i)/ss
+ data['SVD_Min'] = S[:(i+1)].min()
+ #pywikibot.output( u'SVD_Comp: %s' % (1.-float(i)/ss) )
+ #pywikibot.output( u'SVD_Comp: %s %s %s' % (float(i)/ss,
S[:(i+1)].min(), S[:(i+1)].max()) )
+ except linalg.LinAlgError:
+ # SVD did not converge; in fact this should NEVER happen...(?!?)
+ pass
if data:
self._buffer_Geometry.update(data)
_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn