Filter löschen
Filter löschen

Why won't imwrite save to a 16 bit tiff when called from a function?

12 Ansichten (letzte 30 Tage)
Harshad Vishwasrao
Harshad Vishwasrao am 1 Jun. 2016
Bearbeitet: Pavel Dey am 10 Jun. 2016
Hello world, If I run imwrite from the command line, it will write an uint16 bit array into a 16 bit tif file - no problem. But the same command executed from within a function will save an 8 bit image. Has anyone seen this before, and does anybody know how to fix it?
Thanks.
  2 Kommentare
Geoff Hayes
Geoff Hayes am 2 Jun. 2016
Harshad - please share your code that writes the image to file (as called from your function).
Harshad Vishwasrao
Harshad Vishwasrao am 3 Jun. 2016
Bearbeitet: Geoff Hayes am 3 Jun. 2016
Hi Geoff, the imwrite line is:
**************************
outputimage=deconvlucy(inputimage,psf,decon_iter);
for k=1:imageslices
imwrite(outputimage(:,:,k),outfilename,'WriteMode','append');
end;
*************************
'outputimage' is a uint16 stack of images generated by deconvolution with deconvlucy. If I take 'outputimage' and write it to a tif using that for loop from the command line - no problem it gets saved as a 16bit tif. But that same command executed from within the function saves an 8bit tif.
Thanks for your help! -Harsh

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Pavel Dey
Pavel Dey am 10 Jun. 2016
Bearbeitet: Pavel Dey am 10 Jun. 2016
That should not happen. Running a code from Command Window or from a script are same. Please make sure you are not missing anything else. I ran a sample code at my end, and it worked well.
I am posting the code. I converted the uint8 image into an uint16 image first. Then I performed the similar operation on that. Run this in your system and see if it is still showing the issue.
function imwriteIssueML
close all
I = imread('ngc6543a.jpg');
I=im2uint16(I);
figure,imshow(I)
PSF = fspecial('gaussian',7,10);
V = .0001;
BlurredNoisy = imnoise(imfilter(I,PSF),'gaussian',0,V);
figure,imshow(BlurredNoisy)
WT = zeros(size(I));
WT(5:end-4,5:end-4) = 1;
J1 = deconvlucy(BlurredNoisy,PSF);
figure,imshow(J1)
for k=1:3
imwrite(J1(:,:,k),'MyOutput.tif','tif','WriteMode','append');
end
output=imread('MyOutput.tif');

Kategorien

Mehr zu Image Processing Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by