Faits: A. Le 26 février 2007, X._, alors détenu aux Établissements pénitentiaires de la Plaine de l'Orbe (ci-après: EPO), a porté plainte auprès des juges d'instruction de l'arrondissement du Nord vaudois. Il alléguait notamment que, le 24 février 2007, ses gardiens avaient fait un usage injustifié et disproportionné de la force, d'une part en le plaquant violemment au sol alors qu'il ne leur opposait aucune résistance et, d'autre part, en lui mettant des menottes, serrées au point de le faire saigner aux poignets. Sans procéder à aucune vérification, le juge d'instruction en charge du dossier puis le Tribunal d'accusation du canton de Vaud, sur recours, ont refusé de suivre à cette plainte. Par arrêt 6B_319/2007 du 19 septembre 2007, constatant une violation du droit constitutionnel à une enquête officielle approfondie et effective sur toute allégation défendable de traitements prohibés par les art. 10 Cst. et 3 CEDH, la cour de céans a admis un recours de X._, annulé les décisions cantonales et renvoyé la cause au juge d'instruction pour enquête et nouvelle décision. B. Sur renvoi, le juge d'instruction a versé au dossier le certificat médical du 28 février 2007 attestant les lésions subies par X._, ainsi que des copies d'une expertise psychiatrique de celui-ci et de divers rapports de la direction des EPO. Il a aussi entendu, sur les faits de la cause, les gardiens intervenus le 24 février 2007, puis X._ lui-même. Le 2 mars 2009, il a rendu une ordonnance de non-lieu. C. Par arrêt du 18 mars 2009, le Tribunal d'accusation du canton de Vaud a confirmé cette ordonnance. D. Par mémoire personnel du 28 mars 2009, X._ recourt au Tribunal fédéral contre cet arrêt, dont il demande l'annulation, avec renvoi de la cause aux autorités cantonales pour continuation de l'enquête. À titre préalable, il demande à être pourvu d'un avocat d'office spécialisé en droit international. Le Tribunal fédéral n'a pas ordonné d'échange d'écritures. E. Par mémoire personnel du 21 février 2009, X._ avait recouru au Tribunal fédéral contre un arrêt du Tribunal d'accusation du 9 février 2009, qui avait rejeté une demande de récusation que le recourant avait présentée le 26 janvier 2009 contre le juge d'instruction saisi de sa plainte. La Ière Cour de droit public du Tribunal fédéral a rejeté le recours formé contre le rejet de cette demande de récusation par arrêt 1B_144/2009 du 4 juin 2009. 