Canonical links does not prevent Google crawling or indexing them, it tells Google the preferred page. It is useful for when pages are duplicate, for example:
Canonical can help prevent duplicate pages entering the index, but unique pages will be indexed regardless, tag and category pages are not duplicate, they vary from one another so therefore are not duplicate, and obviously will be indexed.
If you want to stop Google then your need to use
noindex, nofollow and
robots.txt methods. Using either methods inform Google not to index those pages.
As you might imagine, we would like to prevent google from listing
the filter pages in the search results.
Might imagine? since when? why wouldn't want Google to crawl those pages that are obviously helpful to your users. Pages such as tags, categories and so forth should be indexed period. It'll be helpful to know what type of filtering you are referring too, i.e date, time etc.
Correct me if I'm wrong... but I fear that you have read some outdated SEO guide that has informed you that you should only index pages you want to rank for, in the attempt to squeeze every little bit of juice to the pages that you want ranked.
You should always index helpful pages, if they are not helpful then don't have them period, never mind not indexing them. If they are helpful then you can still get SEO benefit from them, as people often link to TAG pages etc, if they are noindex... you won't be rewarded, Google does not punish for tag related pages, nor does it reward less for having them...
Should be noted that Stack Exchange has 'MILLIONS' of tag/category pages with no problems, they are helpful, index em.