Trying to figure out how to use pixel shift from A7CR

With the Sony A7CR camera set to pixel shift 16 picture mode, the camera stores 16 RAW files.
I do not have a windows or a mac computer, so I can’t run Sony’s software, so I can’t use that to process the pixel shift RAW files.
Is there a way to tell RawTherapee that a group of RAW files is a pixel shift set? If there is, I have not found a way to do it.
The stuff I did find from several hours of googling implies that I might have to process the files with Sony’s software first which is not possible on Linux.
Is there any software on Linux that can do the necessary processing if in fact it is necessary?

Hi, you can try GitHub - agriggio/make_arq: A command-line tool for generating Sony A7RIII Pixel-Shift ARQ files
I’m not sure it supports that specific camera model out of the box, but it can be extended if that’s not the case.

HTH

Wow, that was a complicated installation. Unfortunately, it does not work. I got the following error message: ERROR: camera SONY ILCE-7CR not supported (must be one of FUJIFILM GFX 100, FUJIFILM GFX100S, SONY ILCE-1, SONY ILCE-7RM3, SONY ILCE-7RM4, SONY ILCE-7RM4A, SONY ILCE-7RM5)

Is this really necessary? Is there no other way to tell rawtherapee that a set of 16 RAW files is a pixel shift set?

Took me a while, but I just realized that you are the author of that program. What is the likelihood that you will update that to support the A7CR? Do you need anything from me to do it? I really hope you don’t need the 16 130 MB RAW files from the camera, but I will upload them if necessary.

Hi, well I could do without the files, but then I wouldn’t have a way of testing whether it works as intended… if you could upload the files somewhere, it would be great.

Do you have a preferred place I could upload them? Could I upload them here? The image I have digitized is a 2’ square negative from a nasa lunar orbiter from the 60’s, so I believe it is public domain.

You can use Google drive,.Dropbox or something like that. I’m not sure uploading directly here is a good idea

Thanks!

I put the files in google drive https://drive.google.com/drive/folders/1KJzuNKiv0AdWieGdsRDNTQC15BOjflyp?usp=drive_link
Let me know if you have trouble with them.
I’m not sure this is a great pixel shift set I could not figure out how to enable pixel shift using my phone to control the camera, so I ended up using the trigger on the camera itself without any delay to initiate the photo, so the first image may suffer from some camera shake. Also, the negative was not quite flat on the light table. This picture is mostly a path finder as I work out how to digitize these negatives.

1 Like

Hi, I tried to download but I get an access denied. Maybe you forgot to make the files public?
Thanks!

My first time using google drive, so I don’t really know what I am doing with it. I have changed the directory to allow anyone with the link to access it.
Hmm, the link it gives now is slightly different. Let me know if this one works.
https://drive.google.com/drive/folders/1KJzuNKiv0AdWieGdsRDNTQC15BOjflyp?usp=sharing

It works now, thanks! I’ve just updated the code, now it should work.
HTH

2 Likes

Thank you for the update. Your program runs now, and creates an output file, but unfortunately, when I import the resulting file into RawTherapee, the resulting image appears to be 1/8 sized random parts of the image stacked on top of each other. The original image is black and white, but the resulting image is mostly red. There is a good chance I’m doing something wrong here, but I don’t know what.

A suggestion to make your program a bit easier to use: Is it possible to just give your program the name of the first file and have it increment the number in the file name so one does not have to type out 16 file names for each image?

Hi,
It might be that rawtherapee needs to be updated as well, I don’t know. Fwiw it works with art, though I don’t remember what I had to do to support 16-shot ps files, sorry.
About usability: what you want sounds like something better suitable for a shell script imho.

Best

I am replacing all the files on google drive with ones that were taken with the correct exposure and aperture for maximum resolution and dynamic range. I am also adding the output file from make_arq. When the upload is complete (in about an hour and a half), I’ll create a new thread asking for one of the RawTherapee developers to have a look and see if they can tell what is going wrong.

Thanks for you help.

scripts are really ugly programming languages, python is a bit less ugly, but I am not familiar with it. I took a look at your code, but could not figure out how to modify it to handle creating its own list of file names from a single one, so I wrote a short snippet of python code that will create a list of the 16 file names from an initial file name. The hardest part to this was figuring out Python syntax. In any case, here is my code snippet:

import re

filename="DSC00034.ARW"
print ("Input file name: "+filename)

	#Find the various parts of the file name
match=re.match('(.*[^0-9])([0-9]+)\.(.*)',filename)

prefix=match.group(1)
number=match.group(2)
suffix=match.group(3)

index =int(number)		#Convert the numaric part of the filename string into an integer

lennum=len(number)
formatstring="%"+'0'+'%d'%(lennum)+'d'	#Create a format string that specifies the correct number of digits

	#Create a list of sequential file names
outfile=[]
for i in list(range(16)):
	outfile=outfile+[prefix+formatstring%(index+i)+'.'+suffix]

print (outfile)


Since I am not really familiar with Python, this is probably pretty ugly code, and I’m sure someone who is familiar with Python could make this shorter and cleaner, but this does work with the format of filenames that Sony cameras use.

Slightly more robust version. Finds the last numeric string before the last ‘.’ in the file name and increments that.

import re

filename="DSC00034.RAW"
print ("Input file name: "+filename)

	#Find the various parts of the file name
if '.' in filename :
	match=re.match("(.*[^0-9]|'')([0-9]+)(.*\.[^\.]*)",filename)
else:
	match=re.match("(.*[^0-9]|'')([0-9]+)([^0-9]*)",filename)

prefix=match.group(1)
number=match.group(2)	#last numaric string in filename before last '.' in string.
suffix=match.group(3)

index =int(number)		#Convert the numaric part of the filename string into an integer

lennum=len(number)
formatstring="%"+'0'+'%d'%(lennum)+'d'	#Create a format string that specifies the correct number of digits

	#Create a list of sequential file names
outfile=[]
for i in list(range(16)):
	outfile=outfile+[prefix+formatstring%(index+i)+suffix]

	# print each filename on a separate line (easier to read results)
for i in list(range(16)):
	print (outfile[i])