import ijfrom ij import IJ
from mpicbg.ij import SIFTfrom mpicbg.imagefeatures import FloatArray2DSIFT
from java.util import HashSetfrom java.lang import Threadfrom java.util.concurrent.atomic import AtomicIntegerfrom java.lang import Runtime
paths = xxx # list containing the paths of the imagesnImages = len(paths)
atomicI = AtomicInteger(0)threads = []
def getFeatures(): floatSIFT = FloatArray2DSIFT(param) ijSIFTLowRes = SIFT(floatSIFT)
while atomicI.get() < (nImages - 1): k = atomicI.getAndIncrement() if k < nImages: imp = IJ.openImage(paths[k]) ip = imp.getProcessor() features = HashSet() ijSIFTLowRes.extractFeatures(ip, features) IJ.log( str(k) + ': ' + str(features.size()) + ' features extracted' ) # if features.size() > 3000: # IJ.log(str(k) + ': ' + '####################################SOMETHING WRONG##################') imp.close() del features
# Creating and starting the threadsfor p in range(int (Runtime.getRuntime().availableProcessors() * 0.9 )):# for p in range(1): thread = Thread(getFeatures) threads.append(thread) thread.start() IJ.log('Thread ' + str(p) + ' started')
# Joining the threadsfor thread in threads: thread.join() IJ.log('Thread joined')
IJ.log('Computing features done')Starting ...Thread 0 started0: 924 features extracted1: 980 features extracted2: 988 features extracted3: 873 features extracted4: 985 features extracted5: 1059 features extracted6: 1040 features extracted7: 1022 features extracted8: 898 features extracted9: 1018 features extracted10: 858 features extracted11: 844 features extracted12: 1035 features extracted13: 950 features extracted14: 983 features extracted15: 1026 features extracted16: 832 features extracted17: 968 features extracted18: 1038 features extracted19: 1012 features extracted20: 850 features extracted21: 1089 features extracted22: 985 features extracted23: 1074 features extracted24: 1002 features extracted25: 1014 features extracted26: 1083 features extracted27: 1004 features extracted28: 910 features extracted29: 1007 features extracted30: 966 features extracted31: 1071 features extracted32: 961 features extracted33: 969 features extracted34: 981 features extracted35: 895 features extracted36: 942 features extracted37: 1041 features extracted38: 1056 features extracted39: 991 features extracted40: 970 features extracted41: 945 features extracted42: 1006 features extracted43: 975 features extracted44: 948 features extracted45: 858 features extracted46: 1006 features extracted47: 1134 features extracted48: 1044 features extracted49: 1013 features extracted50: 1033 features extracted51: 974 features extracted52: 991 features extracted53: 933 features extracted54: 1001 features extracted55: 855 features extracted56: 1008 features extracted57: 935 features extracted58: 992 features extracted59: 909 features extracted60: 905 features extracted61: 996 features extracted62: 881 features extracted63: 999 features extracted64: 754 features extracted65: 917 features extracted66: 720 features extracted67: 1006 features extracted68: 1003 features extracted69: 919 features extracted70: 964 features extracted71: 957 features extracted72: 977 features extracted73: 970 features extracted74: 944 features extracted75: 992 features extracted76: 966 features extracted77: 866 features extracted78: 964 features extracted79: 926 features extracted80: 959 features extracted81: 1014 features extracted82: 990 features extracted83: 958 features extracted84: 926 features extracted85: 974 features extracted86: 953 features extracted87: 963 features extracted88: 987 features extracted89: 885 features extracted90: 846 features extracted91: 943 features extracted92: 926 features extracted93: 899 features extracted94: 883 features extracted95: 961 features extracted96: 957 features extracted97: 861 features extracted98: 902 features extracted99: 888 features extracted
Thread 0 startedThread 1 started0: 924 features extracted1: 980 features extracted2: 988 features extracted3: 873 features extracted5: 1059 features extracted4: 985 features extracted6: 1040 features extracted7: 1022 features extracted8: 898 features extracted9: 1018 features extracted11: 844 features extracted10: 858 features extracted12: 1035 features extracted13: 950 features extracted14: 983 features extracted16: 832 features extracted15: 1026 features extracted17: 968 features extracted18: 1038 features extracted19: 1012 features extracted20: 850 features extracted21: 1089 features extracted23: 1074 features extracted22: 985 features extracted24: 1002 features extracted25: 1014 features extracted26: 1083 features extracted27: 1004 features extracted28: 910 features extracted29: 1007 features extracted30: 966 features extracted31: 1071 features extracted32: 2901 features extracted33: 969 features extracted34: 3189 features extracted36: 2403 features extracted35: 895 features extracted37: 3156 features extracted39: 3437 features extracted38: 1056 features extracted40: 3045 features extracted42: 3054 features extracted41: 945 features extracted43: 2716 features extracted44: 948 features extracted45: 2393 features extracted47: 3039 features extracted46: 1006 features extracted48: 3105 features extracted50: 3436 features extracted49: 1013 features extracted51: 2830 features extracted52: 991 features extracted53: 2945 features extracted55: 2510 features extracted54: 1001 features extracted56: 3122 features extracted58: 2941 features extracted57: 935 features extracted59: 3006 features extracted60: 905 features extracted61: 2864 features extracted63: 3099 features extracted62: 881 features extracted64: 2096 features extracted66: 1941 features extracted65: 917 features extracted67: 3050 features extracted69: 2379 features extracted68: 1003 features extracted70: 2972 features extracted72: 2864 features extracted71: 957 features extracted73: 3012 features extracted75: 3301 features extracted74: 944 features extracted76: 2644 features extracted78: 3054 features extracted77: 866 features extracted80: 2519 features extracted79: 926 features extracted81: 3177 features extracted83: 3142 features extracted82: 990 features extracted84: 2637 features extracted86: 2744 features extracted85: 974 features extracted87: 2934 features extracted89: 2590 features extracted88: 987 features extracted90: 2962 features extracted92: 2900 features extracted91: 943 features extracted93: 2878 features extracted94: 883 features extracted95: 2773 features extracted97: 2392 features extracted96: 957 features extracted98: 2641 features extracted100: 2738 features extracted99: 888 features extracted
// Not concurrent safe! So two copies, one per layer and Thread:final SIFT ijSIFT1 = new SIFT( new FloatArray2DSIFT( p.sift ) );
import ij, os,timefrom ij import IJ
from mpicbg.ij import SIFTfrom mpicbg.imagefeatures import FloatArray2DSIFT
from java.util import HashSetfrom java.lang import Threadfrom java.util.concurrent.atomic import AtomicIntegerfrom java.lang import Runtime
path = os.path.normpath(xxx)
paths = [ os.path.join(path,name) for name in filter(lambda x: os.path.splitext(x)[1] == '.tif', os.listdir(path))] # list containing the paths of the images#print paths
nImages = len(paths)
atomicI = AtomicInteger(0)threads = []
def getFeatures(): pLowRes = FloatArray2DSIFT.Param().clone() pLowRes.fdSize = 8 pLowRes.initialSigma = 0.5 while atomicI.get() < (nImages - 1): k = atomicI.getAndIncrement() if k < nImages: floatSIFT = FloatArray2DSIFT(pLowRes) ijSIFTLowRes = SIFT(floatSIFT) imp = IJ.openImage(paths[k]) ip = imp.getProcessor() features = HashSet() ijSIFTLowRes.extractFeatures(ip, features) IJ.log( str(k) + ': ' + str(features.size()) + ' features extracted' ) imp.close() del features
# Creating and starting the threadsfor p in range(int (Runtime.getRuntime().availableProcessors() * 0.9 )):#for p in range(1): thread = Thread(getFeatures) threads.append(thread) thread.start() #time.sleep(5) IJ.log('Thread ' + str(p) + ' started')
# Joining the threadsfor thread in threads: thread.join() IJ.log('Thread joined')
IJ.log('Computing features done')