Faits: Faits: A. Le dimanche 4 mai 2003, vers 20h, B._, né le 3 octobre 1989, a fait une chute à trottinette, près de La Roche. Il s'est relevé en se plaignant d'une douleur à la tête et à l'épaule droite. Dès leur retour à la maison, sa mère, C._, a appelé le service des urgences de l'hôpital de Riaz. Il lui a été conseillé d'administrer un remède analgésique et d'observer l'enfant pendant les trois quarts d'heure suivants, et de passer à l'hôpital en cas de besoin, ce qui ne s'est pas révélé nécessaire. A 22h, B._ s'est plaint de maux de dents et à la tête. Le matin du lundi 5 mai 2003, C._ a fait examiner B._ par son médecin traitant, D._. Celle-ci a diagnostiqué une fracture de la clavicule droite. Le lundi 5 mai à 14h30, B._ a appelé sa mère au téléphone; il lui a dit qu'il était rentré à la maison après avoir vomi à l'école. Vers 17h40, C._ a appelé D._ pour lui signaler ce qui s'était passé et que B._ se plaignait de maux de tête et de dents. D._ lui a demandé si B._ avait souffert de diarrhée. C._ a répondu par l'affirmative, en précisant que sa fille Marlène, cadette de B._, avait également vomi à deux ou trois reprises dans la nuit du 3 au 4 mai 2003. D._ a conclu prioritairement à une gastro-entérite virale, subsidiairement à une commotion cérébrale. Elle a rappelé C._ à 20h pour prendre des nouvelles. Comme B._ semblait aller mieux, elle n'a pas laissé d'instructions particulières. Dans la soirée, B._ a vomi à plusieurs reprises. Au moment de se coucher, vers 21h15, il s'est plaint de violents maux de tête et de dents. C._ a cherché à joindre D._, en vain. Lorsqu'elle a visité son fils vers 23h45, il dormait profondément et ronflait. Le mardi 6 mai 2003 à 6h30, C._ n'a pas pu réveiller son fils, dont D._ a constaté le décès à 7h. L'autopsie a permis d'établir que la mort était survenue à la suite de la fracture de l'os temporal droit et d'un hématome épidural, consécutif à la chute en trottinette. Le 6 mai 2003, le Juge d'instruction du canton de Fribourg a ouvert contre inconnu une instruction qualifiée, au sens de l'art. 153 CPP/FR, pour homicide par négligence. Le 17 mars 2004, Thomas Krompecher et Jean-Georges Villemure, médecins auprès de l'Institut universitaire de médecine légale de Lausanne, ont établi un rapport concluant au lien de causalité entre le traumatisme crânien et le décès. Aucun indice de la lésion n'était décelable jusqu'au 5 mai 2003 à 21h. En particulier, les symptômes liés aux vomissements et maux de tête n'ont pas laissé suspecter la fracture, compte tenu du fait que l'état de B._ semblait s'être amélioré et que le soupçon de gastro-entérite, diagnostiquée chez un autre enfant, avait pu semer la confusion. La façon dont D._ avait soigné l'enfant échappait à la critique. Le 23 mars 2004, le Juge d'instruction a communiqué ce rapport aux parties. Le 24 mai 2004, A._, père de B._, a demandé l'audition de l'un des deux experts. Le 23 juillet 2004, le Juge d'instruction a rejeté cette requête et communiqué le dossier au Tribunal cantonal. Le 31 août 2004, celui-ci a prononcé le non-lieu. Le 31 août 2004, celui-ci a prononcé le non-lieu. B. Agissant par la voie du recours de droit public, A._ demande au Tribunal fédéral d'annuler la décision du 31 août 2004. Il invoque les art. 9 et 29 al. 2 Cst. Le Tribunal cantonal se réfère à sa décision. Le Juge d'instruction a renoncé à se déterminer. 