Re: [DIY] Auto-Stereo with Parallax Barriers
Posted: Thu Jan 20, 2011 10:34 am
sorry for double post
The Number One Resource For Stereoscopic 3D Excitement!
https://www.mtbs3d.com/phpbb/
There are a lot of factors involved, just having the pixel pitch will only get you so far. For example, the thickness of the glass on the screen is a factor. So is the IPD of the user. I mean, if someone had a different brand 1680x1050 22" LCD, I bet the pattern I'm using on the Zalman would be close enough. But for any other sizes, resolutions they would have to figure it out like I did. I do have a method that makes this easy to follow, and I will be writing a tutorial in the next few days. But it is still a process of trial and error. I was thinking maybe as a community we could pick a widely available cheap LCD screen as a standard model (lets say up to 24", anything bigger may not be economical to do this). I would then buy this model and perfect the pattern on that. Then I could post the pattern file, or even send people sheets if they want (and you buy the specific monitor). I've seen some 1080P LCDs going for like $150 or less, so this idea could actually work. And it would be cheaper than buying just the Nvidia 3D Vision glasses alone forget the monitor!Okta wrote:Say someone had a spare 19inch lcd and they wanted you to print one up for them... how would you go about working out the pixel pitch for it and printing it up or would they have to start from scratch as you did and keep printing test sheets until it worked?
Since printer resolution is different vertically and horizontally, it would be harder to print such pattern correctly.Guig2000 wrote:It could be interesting to try with a checkerboard pattern I think.
Hey Ciber! I have made some fixes in the optimization problem. Now it only consider feasible solutions reducing the search space so the computing time and the results are improved, since in the previous versions it may happen that the best result correspond to a non feasible solution (and thus, totally useless). You should realize that this program in fact simulates the enviroment given in the setup and then search for the best solution. The drawback "red colored" that I mentioned in the post it is related to the save process (like you mentioned) of the pattern. Hovewer, one can take the values given by the algorithm and then employ another software (like Photoshop) to actually print the pattern.cybereality wrote:@Galo: Interesting work. I will have to test out your program and compare it to my trial and error based results. I actually started doing something similar to this at first, although I was using Javascript to code a script inside Photoshop. While this did add some flexibility, the process was very intensive, consuming large amounts of RAM and CPU processes. Many times it would crash my computer, even with only 600dpi patterns (this was on my old computer, but still). So I abandoned the method since it was time consuming and crashed the computer too frequently. Maybe there is some way to optimize this somehow, like rendering on the GPU maybe. I don't know, I will look into it.
Ah yes, I incorrectly said that a slanted disposition would enhance brightness, but it's not the case. In fact it will even it out on the whole screen because the black space between subpixels won't be visible only in vertical lines but dispatched equally on the surface of the screen.cybereality wrote:@Fredz: Well brightness loss is actually less than with the Zalman solution. Even though resolution is halved (like Zalman) you are not wearing polarized glasses. So colors are brighter and more accurate (but not by much).
You can try the technique used in this paper to reduce ghosting :cybereality wrote:Ghosting can be reduced by using the monitor in portrait orientation and increasing the duty cycle and/or adding additional barriers. However this causes a massive reduction in image brightness and overall quality so it is not worth it. However in some tests I did get extremely low ghosting, so it is possible.
I can't really tell without actually seeing your screen, but I'd say the grainy-ness you see could be a moiré. Moiré artefacts can take several different forms, with parallax barriers they often produce visible vertical lines. That's one of the reason why many autostereoscopic displays now use slanted parallax barriers instead of vertical ones.cybereality wrote:The moire pattern is actually caused by the camera taking the picture. I did not see anything like that in real life. There was, however, a grainy-ness to the image, but it looks more random than moire.
The slanted setup can also reduce this by mitigating the disparity in both horizontal and vertical resolution instead of only halving the horizontal resolution. That's the second goal besides reduction of the moiré that was pursued by Douglas Winnek when he invented the slanted technique.cybereality wrote:Horizontal resolution loss is inevitable with a solution like this, but its not so bad (especially since my "real" 3d solution is also interleaved its not that big a difference).
Yes, I'm not aware of any driver supporting that at this time, but with the recent video posted about iPont supporting slanted barriers with YouTube 3D the interest may grow. And the implementation is quite straightforward so it wouldn't be very difficult to add it to a stereo driver.cybereality wrote:I did read some white-papers that suggested using diagonal barriers, and the concept seemed interesting. However that would not work with the iz3D driver, and thus be useless for gaming.
If you want to try to implement this technique, have a look at this paper that gives a good description of the algorithm (for lenticular screens but easily adaptable to parallax barriers I think) :cybereality wrote:However I do have plans to continue this project for a custom application (for example, done in OGRE) and in that case I could experiment with diagonal. I guess I could test in Photoshop first, but its not a priority at the moment.
There are several benefits to slanted parallax barrier, as I said it reduces the moiré because black spaces between subpixels appear on the whole screen instead of only in vertical lines (picket fence effect).cybereality wrote:However, I still don't quite understand how that helps the situation much. At the end of the day, you are ultimately blocking individual pixels (or sub-pixels) so that comes along with the same problems. Would be interested if you had a link that clearly explained the benefits
I would sell them myself, except every monitor is slightly different. I would need a template for each specific model. I was thinking maybe we could all choose a good cheap 1080P display and use that as a base model. So I would buy that screen and perfect the pattern on it, then I could send people the working pattern. Obvious you need to buy the monitor yourself. The monitors I was looking at would be around 23" 1080P and cost around $150.wuhlei wrote:I'd rather just buy the sheets. Is any one selling them?
As I said, if you used slanted parallax barriers you wouldn't need to have a perfect match and wouldn't be limited to a high DPI printer. I guess it should also correct the color leaking from subpixels you experienced when not in portrait mode.cybereality wrote:The pattern only works at a 1:1 pixel mapping. Each barrier blocks a single column of pixels and the display must be run at its native resolution. There can be no scaling of any kind. Kinko's will not be of much help, I already went down that road. Their printers (at least the ones by me) could only do 600dpi. We need at least 1200dpi for this project.
That's what I was afraid of, and I'll bet even if you can get down right the quality is lost when looking at the sides of the screen because the angle would shore more then a pixle?cybereality wrote:The pattern only works at a 1:1 pixel mapping. Each barrier blocks a single column of pixels and the display must be run at its native resolution. There can be no scaling of any kind. Kinko's will not be of much help, I already went down that road. Their printers (at least the ones by me) could only do 600dpi. We need at least 1200dpi for this project. Even if they had the proper printers, it would be really annoying having to go back and forth to Kinko's every time you want to test a pattern. It could easily take 20 or 30 attempts to find the right pattern, you really need to be doing it yourself.
Cool, what do you mean slanted and is there a downside to this compared to the other way? Maybe you could talk IZ3D to supporting it? lolFredz wrote:As I said, if you used slanted parallax barriers you wouldn't need to have a perfect match and wouldn't be limited to a high DPI printer. I guess it should also correct the color leaking from subpixels you experienced when not in portrait mode.cybereality wrote:The pattern only works at a 1:1 pixel mapping. Each barrier blocks a single column of pixels and the display must be run at its native resolution. There can be no scaling of any kind. Kinko's will not be of much help, I already went down that road. Their printers (at least the ones by me) could only do 600dpi. We need at least 1200dpi for this project.
Unfortunately there doesn't seem to exist stereo 3D drivers for that, but viewing photos or playing videos should still be possible though. You'd just need to convert them to the correct format or write a script to do it on the fly.
Slanted just means that the barrier is placed with an angle in respect to the vertical.wuhlei wrote:Cool, what do you mean slanted and is there a downside to this compared to the other way?
By slanted I didn't meant "staircased", it's been shown in the paper about Dynallax that the staircased solution is not as good as the slanted one because it does need very precise registration which is not really practicable.dagbro wrote:Fredz, that's not going to work for a DIY project. You'd have to design a pixel-perfect "staircase" in order to not cover any subpixels up or leak them to the wrong eye. And, you'd have to design the vertical just as carefully as the horizontal.
Yes, that's the downside. But the code is extremely simple to write, it only takes six lines in my image conversion app. The subpixel version should be equally simple and should require 2 or 3 more lines of code at most.dagbro wrote:on top of that, there are no programs that support it, so you'd have to write your own from the ground up.
As I said you can correct the color leaking by taking subpixels into account, I wouldn't be surprised that this solution leaks less than a vertical barrier with a screen using an horizontal RGB subpixels arrangement.dagbro wrote:if you'd be willing to go that far, writing your own drivers and filters could solve the "staircase problem" and let you use straight lines, IF you could write them to be subpixel-aware. but then you'd have color shifting instead because you messed with the subpixels! bad boy!
I guess someone could ask them to add support for this, but I'm not sure they'd invest time in it if they can't have a return on investement. It doesn't cost anything to ask anyway...wuhlei wrote:Maybe you could talk IZ3D to supporting it? lol
there is no perfect vertical barrier unless the barriers at the side of the screen are a different position, angle and width then the ones in the center. This is much worse then wearing 3D Glasses, I would rather use prism glasses and not drive my self crazy.dagbro wrote:a perfect vertical barrier shouldn't leak at all, and is supported by lots of software so i guess it's just a matter of choosing what you want to spend your time with, printing the barrier or adjusting your software to match your desired angle.
since the screen is flat, the pixel pitch is fixed and our eyes are parallel to the screen surface, a perfect vertical barrier does exist and has a fixed line width+line distance across the entire plane. You just have to get your calculations right.wuhlei wrote:there is no perfect vertical barrier unless the barriers at the side of the screen are a different position, angle and width then the ones in the center. This is much worse then wearing 3D Glasses, I would rather use prism glasses and not drive my self crazy.dagbro wrote:a perfect vertical barrier shouldn't leak at all, and is supported by lots of software so i guess it's just a matter of choosing what you want to spend your time with, printing the barrier or adjusting your software to match your desired angle.
Not true sorry, this would be great for the center of the screen but the lines on the side of the monitor needs a different width and position. It seems like no matter what there is going to be quality loss. Instead of getting a new monitor, buying a printer and all that I just got an IZ3D monitor on sale at ebay for 200$dagbro wrote: since the screen is flat, the pixel pitch is fixed and our eyes are parallel to the screen surface, a perfect vertical barrier does exist and has a fixed line width+line distance across the entire plane. You just have to get your calculations right.
i do realize there's no such thing as a perfect printer, but nonetheless, with enough DPI it's very possible.
a 1200dpi printer has a dot pitch of 0.0212mm. this is more than four times smaller than the SUBpixel pitch of my screen.
on a totally different topic, there should be an infinite number of working 3d hotspots with this tech. The only problem is that you have to keep your eyes in the exact "plane" that you calculated the barrier for.. in other words, you could move your head sideways until you get to another hotspot, but you can't turn your head to look at the screen