On Mar 7, 3:27 pm, Ian Kelly <ian.g.ke...@gmail.com> wrote: > On Wed, Mar 7, 2012 at 1:03 PM, Ian Kelly <ian.g.ke...@gmail.com> wrote: > > A set of defective pixels would be the probable choice, since it > > offers efficient membership testing. > > Some actual code, using a recursive generator: > > def get_cluster(defective, pixel): > yield pixel > (row, column) = pixel > for adjacent in [(row - 1, column), (row, column - 1), > (row, column + 1), (row + 1, column)]: > if adjacent in defective: > defective.remove(adjacent) > for cluster_pixel in get_cluster(defective, adjacent): > yield cluster_pixel > > defective = {(327, 415), (180, 97), (326, 415), (42, 15), > (180, 98), (325, 414), (325, 415)} > clusters = [] > > while defective: > pixel = defective.pop() > clusters.append(list(get_cluster(defective, pixel))) > > from pprint import pprint > pprint(clusters) > > Cheers, > Ian
This works for me and I can modify it to look for column defects also. It also shows I know less about Python then I thought I did. I had to read up on generators and iterators to understand the code. Thanks -- http://mail.python.org/mailman/listinfo/python-list