[{"data":1,"prerenderedAt":216},["ShallowReactive",2],{"project-15961850":3},{"id":4,"name":5,"line":5,"line_source":6,"title":7,"url":8,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":40,"post_text":42,"what":43,"said":58,"maker_in_thread":143,"shape":147,"grid":150,"attempts":176,"same_week":177,"maker_shows":207,"maker_hidden":208,"reader_version":209,"card":210},"15961850","Swapping Position and Brightness in Grayscale Images","title","Show HN: Swapping Position and Brightness in Grayscale Images","https:\u002F\u002Fwww.productchart.com\u002Fblog\u002F2017-12-19-images","productchart.com","no_gravity",1513704339,2017,36,15,962,2242,43,"shown","creative","image processing","web_app",[23,24,25,26],"grayscale image","luma waveform","image transform","brightness histogram","curious",0.167,{"positive":30,"neutral":31,"mixed":32,"critical":33},3,9,1,0,13,{"idea":36,"design":38,"execution":39},{"positive":37,"critical":33},2,{"positive":33,"critical":33},{"positive":32,"critical":33},[30,33,30,30,30,30,30,30,30,30,41,41,33,41,30],5,null,{"problem":44,"audience":42,"pricing":42,"motivation":42,"time_to_build":42,"stack":56,"openness":57,"stage":57,"team_size":57},{"value":45,"source":46,"evidence":47},"Visualising brightness distribution by image position in grayscale images","inferred",[48,52],{"id":49,"by":50,"text":51},"15962178","ryandamm","This is traditionally called a histogram in video. It allows you to see brightness by region, though it's typically stacked vertically.",{"id":53,"by":54,"text":55},"15964771","pierrec","Modern waveform monitors usually have a feature that does exactly this. They replaced the older analog waveform monitors, which achieved a visually similar result but through…",[],"unknown",{"praise":59,"objections":78,"requests":97,"questions":109,"alternatives":123},[60,72],{"value":61,"source":62,"evidence":63},"Entertaining simple algorithm with interesting results","commenter",[64,68],{"id":65,"by":66,"text":67},"15965827","chrisparton1991","It would be neat to provide an \"iterations\" parameter that runs the algorithm N times over the source image. It could be implemented a slider so the results can be animated,…",{"id":69,"by":70,"text":71},"15967333","brian-armstrong","This is a crazy transform to wrap your head around. Given the impl, I think I would restate it as B'(x,y) = ARGMAX(B(u,y)=x, u) -- that is, the brightness at x,y in the new image…",{"value":73,"source":62,"evidence":74},"Improved averaging produces better image",[75],{"id":76,"by":70,"text":77},"15973701","Awesome! The background gradient bar seems reasonable now, you can see that it's about hakf brightness which makes more sense to me :)",[79,86],{"value":80,"source":62,"evidence":81},"Swapping x with brightness is misleading; dithering exaggerates perceived brightness variation",[82],{"id":83,"by":84,"text":85},"15963120","Karliss","You can keep one of the dimensions by making a histogram a 3d surface. 3d surface f(x,y)->z can be displayed as flat image with brightness representing z value. Brightness can be…",{"value":87,"source":62,"evidence":88},"Not a true histogram; it keeps positional information",[89,93],{"id":90,"by":91,"text":92},"15962577","TeMPOraL","Isn't histogram an entirely different thing? As far as I know, to make a histogram you'd iterate over all pixels and, for each of them, increment histogram[pixelBrightness]. Here…",{"id":94,"by":95,"text":96},"15962589","emeraldd","Doesn't a histogram throw away the positional element of the pixel entirely and bin by the number of pixels at a particular brightness? This doesn't seem to do that ...",[98,105],{"value":99,"source":62,"evidence":100},"Select a region of the original image to focus on",[101],{"id":102,"by":103,"text":104},"15964380","swframe2","I wish the demo had the ability to select a region in the original image to focus on. See http:\u002F\u002Fsvgjs.com\u002Fsvg.draw.js\u002Fdemo\u002Findex.html",{"value":106,"source":62,"evidence":107},"Add an iterations parameter to run the algorithm repeatedly with a slider",[108],{"id":65,"by":66,"text":67},[110,117],{"value":111,"source":112,"evidence":113},"Is there a link to an example of this histogram type","maker",[114],{"id":115,"by":10,"text":116},"15962331","Interesting. Do you have a link to such a histogram?",{"value":118,"source":112,"evidence":119},"Would a proper average improve the image",[120],{"id":121,"by":10,"text":122},"15968483","Correct! In fact, I already use a poor mans average. Initially newImage is all black and then: ``` b=oldImage[x,y]; xa=(newImage[b,y]+x)\u002F2; \u002F\u002F poor mans average newImage[b,y]=xa;…",[124,136],{"value":125,"source":62,"evidence":126},"Luma waveform monitors in video equipment and grading software",[127,128,132],{"id":53,"by":54,"text":55},{"id":129,"by":130,"text":131},"15970417","arnarbi","This is used a lot in grading video, where it is called a luma waveform. Here's a quick tutorial: https:\u002F\u002Fyoutu.be\u002Fqt1XpfFMyyw",{"id":133,"by":134,"text":135},"15962775","nhoiunh4nth","Yes it does. This is similar to what is shown on the video scopes of television engineers in the luma waveform view.…",{"value":137,"source":62,"evidence":138},"Luma parade and RGB parade views",[139],{"id":140,"by":141,"text":142},"15964944","amaterasu","Specific feature is colloquially known as luma parade. Also done using RGB channels, (inventively) referred to as RGB parade. Also, on video monitors the parade is usually done…",{"comments":37,"answered":32,"key":144},[145,146],{"id":115,"text":116},{"id":121,"text":122},{"commenters":34,"max_depth":30,"maker_replies":37,"first_comment_mins":148,"lifespan_hours":149},31,27,[151,153,155,159,160,161,162,164,165,166,168,170,172,174,175],[49,33,30,152,50,33],"project\u002Fneutral\u002Fidea",[115,33,33,154,10,32],"commenter\u002Fneutral\u002Fnone",[156,33,30,157,158,33],"15962565","project\u002Fneutral\u002Fnone","fyrstenberg",[90,33,30,152,91,33],[94,33,30,152,95,33],[133,33,30,152,134,33],[83,33,30,163,84,33],"project\u002Fmixed\u002Fidea",[53,32,30,152,54,33],[140,32,30,157,141,33],[102,37,30,167,103,33],"project\u002Fneutral\u002Fdesign",[65,30,41,169,66,33],"project\u002Fpositive\u002Fidea",[69,171,41,169,70,33],4,[121,171,33,173,10,32],"project\u002Fpositive\u002Fexecution",[76,171,41,173,70,33],[129,41,30,152,130,33],[],[178,183,188,193,198,203],{"id":179,"name":180,"points":181,"category":182},"15945490","dumbcoin",412,"learning_science",{"id":184,"name":185,"points":186,"category":187},"15972402","Termipal",195,"dev_tools",{"id":189,"name":190,"points":191,"category":192},"15925736","Servers.lol",150,"web_saas",{"id":194,"name":195,"points":196,"category":197},"15919646","PyFunctional",129,"languages",{"id":199,"name":200,"points":201,"category":202},"15950325","pm-as-code",122,"productivity",{"id":204,"name":205,"points":206,"category":202},"15945658","Darkwire.io",118,7,false,"v2",{"id":211,"name":5,"line":5,"ai":208,"cat":19,"year":12,"points":13,"comments":14,"rec":27,"s":212,"top":17,"kw":213,"maker":10,"domain":9,"tier":18,"attempts":33,"strip":214,"url":8,"mix":215,"praise":61,"objection":80,"sub":20},15961850,0.17,[23,24,25,26],"303333333355053",[30,31,32,33],1793990968016]