#include <dwt.hh>
Collaboration diagram for oln::transforms::dwt< I, K >:
Public Types | |
typedef I | original_im_t |
Exact of the image. | |
typedef mlc::exact< I >::ret::value_type | original_im_value_t |
Original data type of the image. | |
typedef mute< I, ntg::float_d >::ret | trans_im_t |
Type of the transformed image. | |
typedef K::self_t | coeffs_t |
Data type of coefficients. | |
Public Member Functions | |
dwt (const original_im_t &im) | |
Constructor from an image. | |
const trans_im_t | transformed_image () const |
Accessor to the transformed image. | |
trans_im_t & | transformed_image () |
Accessor to the transformed image. | |
trans_im_t | transform (dwt_transform_type t=dwt_non_std, bool normalized=true, unsigned l=0) |
Compute the dwt transform. | |
trans_im_t | transform_inv (unsigned l=0) |
Compute the invert dwt transform. | |
template<class T1> mute< I, T1 >::ret | transform_inv (unsigned l=0) |
Compute the invert dwt transform. |
I | Exact type of the image to process. |
K | Type of coefficients. |
Definition at line 470 of file dwt.hh.
|
Constructor from an image. Initialization of dwt transform.
Definition at line 486 of file dwt.hh. References oln::transforms::dwt< I, K >::original_im_t, oln::transforms::dwt< I, K >::original_im_value_t, and oln::transforms::dwt< I, K >::trans_im_t.
00486 : original_im(im) 00487 { 00488 ntg_is_a(original_im_value_t, ntg::real)::ensure(); 00489 00490 im_size = im.size().nth(0); 00491 assertion(im_size >= coeffs.size()); 00492 for (unsigned i = 1; i < original_im_t::dim; i++) 00493 assertion(im_size == static_cast<unsigned>(im.size().nth(i))); 00494 00495 max_level = static_cast<unsigned>(log(2 * im_size / coeffs.size()) / 00496 internal::ln_2_); 00497 00498 current_level = max_level; 00499 00500 assertion(!(im_size % (1 << max_level))); 00501 00502 trans_im = trans_im_t(im.size()); 00503 } |
|
Compute the dwt transform.
Definition at line 532 of file dwt.hh. References oln::transforms::dwt< I, K >::trans_im_t.
00534 { 00535 if (l == 0) { 00536 l = max_level; 00537 current_level = max_level; 00538 } else { 00539 if (l > max_level) 00540 l = max_level; 00541 current_level = l; 00542 } 00543 00544 oln_iter_type(trans_im_t) it(trans_im); 00545 00546 if (normalized) { 00547 norm = pow(sqrt(2), original_im_t::dim * l); 00548 for_all(it) 00549 trans_im[it] = original_im[it] / norm; 00550 } 00551 else { 00552 norm = 1; 00553 for_all(it) 00554 trans_im[it] = original_im[it]; 00555 } 00556 00557 unsigned lim = im_size >> (l - 1); 00558 transform_type = t; 00559 00560 internal::dwt_transform_(trans_im, lim, im_size, coeffs, t); 00561 00562 return trans_im; 00563 } |
|
Compute the invert dwt transform.
Definition at line 604 of file dwt.hh. References oln::transforms::dwt< I, K >::trans_im_t, and oln::transforms::dwt< I, K >::transform_inv().
00605 { 00606 ntg_is_a(T1, ntg::real)::ensure(); 00607 00608 trans_im_t tmp_im = transform_inv(l); 00609 typename mute<I, T1>::ret new_im(tmp_im.size()); 00610 00611 oln_iter_type(trans_im_t) it(tmp_im); 00612 00613 for_all(it) 00614 new_im[it] = (tmp_im[it] >= ntg_inf_val(T1) ? 00615 (tmp_im[it] <= ntg_sup_val(T1) ? 00616 tmp_im [it] : 00617 ntg_sup_val(T1)) : 00618 ntg_inf_val(T1)); 00619 return new_im; 00620 } |
|
Compute the invert dwt transform.
Definition at line 570 of file dwt.hh. References oln::transforms::dwt< I, K >::trans_im_t. Referenced by oln::transforms::dwt< I, K >::transform_inv().
00571 { 00572 if (l == 0) 00573 l = current_level; 00574 else if (l > current_level) 00575 l = current_level; 00576 00577 trans_im_t new_im(trans_im.size()); 00578 oln_iter_type(trans_im_t) it(trans_im); 00579 00580 if (norm != 1) { 00581 for_all(it) 00582 new_im[it] = trans_im[it] * norm; 00583 } 00584 else 00585 for_all(it) 00586 new_im[it] = trans_im[it]; 00587 00588 unsigned lim1 = im_size >> (current_level - 1); 00589 unsigned lim2 = im_size >> (current_level - l); 00590 00591 internal::dwt_transform_inv_(new_im, lim1, lim2, coeffs, transform_type); 00592 00593 return new_im; 00594 } |
|
Accessor to the transformed image. Non const version. Definition at line 520 of file dwt.hh. References oln::transforms::dwt< I, K >::trans_im_t.
00521 {
00522 return trans_im;
00523 }
|
|
Accessor to the transformed image. Const version. Definition at line 510 of file dwt.hh. References oln::transforms::dwt< I, K >::trans_im_t.
00511 {
00512 return trans_im;
00513 }
|