This might be a load of old nonsense.
I have always had it in my head that if $f:X\to Y$ is an injection, then $f$ has some sort of "canonical factorization" as a bijection $X\to f(X)$ followed by an inclusion $f(X)\subseteq Y$. Similarly if $g:X\to Y$ is a surjection, and if we define an equivalence relation on $X$ by $a\sim b\iff g(a)=g(b)$ and let $Q$ be the set of equivalence classes, then $g$ has a "canonical factorization" as a quotient $X\to Q$ followed by a bijection $Q\to B$. Furthermore I'd always suspected that these two "canonical" factorizations were in some way dual to each other.
I mentioned this in passing to a room full of smart undergraduates today and one of them called me up on it afterwards, and I realised that I could not attach any real meaning to what I've just said above. I half-wondered whether subobject classifiers might have something to do with it but having looked up the definition I am not so sure that they help at all.
Are inclusions in some way better than arbitrary injections? (in my mind they've always been the "best kind of injections" somehow). Are maps to sets of equivalence classes somehow better than arbitrary quotients? I can't help thinking that there might be something in these ideas but I am not sure I have the language to express it. Maybe I'm just wrong, or maybe there's some ncatlab page somewhere which will explain to me what I'm trying to formalise here.