void orientation(const Image<Matrix<T,2,1> >& src, Image<T>& dst) { if (dst.sizes() != src.sizes()) dst.resize(src.sizes()); typedef typename Image<Matrix<T,2,1> >::const_iterator InputIterator; typedef typename Image<T>::iterator OutputIterator; InputIterator src_it(src.begin()); InputIterator src_it_end(src.end()); OutputIterator dst_it(dst.begin()); for ( ; src_it != src_it_end; ++src_it, ++dst_it) *dst_it = std::atan2(src_it->y(), src_it->x()); }
void stableNorm(Image<T, D>& dst, const Image<Matrix<T,M,N>, D>& src) { if (dst.sizes() != src.sizes()) dst.resize(src.sizes()); typedef typename Image<Matrix<T,M,N>, D>::const_iterator InputIterator; typedef typename Image<T, D>::iterator OutputIterator; InputIterator src_it(src.begin()); InputIterator src_it_end(src.end()); OutputIterator dst_it(dst.begin()); for ( ; src_it != src_it_end; ++src_it, ++dst_it) *dst_it = src_it->stableNorm(); }