lucasw / vimaj

keyboard controlled high speed image browsing
GNU General Public License v3.0
0 stars 0 forks source link

Project outline #1

Open lucasw opened 4 years ago

lucasw commented 4 years ago

Probably won't use any of the old code here, but useful as reference.

Two systems may implemented, may have some common code:

Multiple views into same image: In one mode don't even view the original image (which will save memory), just go through the subimage views in order.

Full screen mode, rotate 90 easily.

Optionally show the parts of the image outside the subimage, but use the subimage to fill the view area.

Use blank space to show full size or thumbnail views of adjacent images.

Make borders between subimage and rest or image, or adjacent images, optional to maximize screen usage.

Primary subimage is the axis aligned rectangle, rotated rectangles come next (and could have corners outside the primary aligned rect), then polygons, pixel level masks.

Filter by labels, mask out parts of image by label. Several optional infilling of masked out areas- e.g. a borderless blur, pixellation + blur- less visually intrusive the better.

Export subimages to standalone images.

GPU - get the images into gpu memory - should be able to store many hundreds, fill video memory up until some cap, then start removing oldest viewed. Translations, rotations and crops and basic interpolation becomes nearly free once in video memory.

Multi-threaded - get the application running and show initial images in lower quality as quickly as possible. In background stream in higher quality of current and adjacent images (biased toward later images maybe by 2:1 factor). Optionally throttle this in cpu to prevent overworking a system, loading a lot of images unlikely to be view soon.

picasa.ini import tool- convert picasa.ini files with crop selections as initial sub images. There are documents and libraries online. Though if this new tool is fast enough then re-cropping many images already cropped isn't that much of an issue.

Per image metadata files instead of combined per directory like picasa? Probably faster to have just one file per directory (which is also loaded into a proper database, probably), but then more difficult for file management outside of this tool (which picasa is very poor at). The one file per dir allows file ordering to be managed by that file.

Same logic applies to thumbnail views, could have sprite sheets pre-rendered to browse through so can use those for quickly loading a view of a whole directory.

Need raw image support, show colors properly - hopefully can be taken care of in existing library.


Machine learning features:

Want to both use the tool to feed into machine learning, and use machine learning within in it.

Super resolution - increase zoom capability. If rendering the super zoom is expensive then save the image and prefer that when viewing.

The image crop views obviously would work well with image segmentation classification,

Labels - need autocomplete, suggestions based on most recently used labels, all other labels in current dir.

lucasw commented 4 years ago

Cropping/aligned subimage definition

This needs to be very fast for the user, assuming either a mouse or touchpad.

No clicking and dragging as in picasa (and also no snapping to aspect ratios). Instead a preview crop line can appear where the pointer currently is, clicking will make that the new boundary. Assume which edge the user want based on proximity (normalized so high aspect ratio boundaries can still be operated on). Keyboard commands and mouse wheel to nudge the last changed line a few percent/pixels left/right or up/down.

Zoom image to current border plus margin after a boundary is adjusted. Keyboard command to quickly zoom out to full image view. Could also zoom to area around where adjustment was made for even finer adjustment.

Zoomed in window to side shows even closer up view of the line- it can move with the cursor or get locked to last adjustment.

Multiple levels of undo.