This image received many channels ADC(Y) in moment of time (Xn) from a pulse(I think that from It we have stripes on origin image) power supply. First 736 rows is my image. Because my main image(First 736 rows) can have different objects(useful signals e.e. some smartphone or car for example), I have reference channels(without useful signal) for normalize. Last 64 rows is my reference channels(should be "ideal - without noise" and without "test object"). Format of data in pixel is 20 bit(It is custom format).
My first step is normalize(one scale image by axis X).
I normalize next formulae in MATLAB:
X_Mean_main_image_column(1:736,:)) = mean(Input_Image1(1:736,:)); XMean_REF = mean(mean(Input_Image1(737:end,:),2)); %Mean of reference channels XMean_REF_Column(1,:) = (mean(Input_Image1(737:end,:))); %mean of Xn of reference channels K = XMean_REF./XMean_REF_Column; % coefficients of scale for j = 1:width_picture % apply coefficients for each row gg(j,:) = double(Input_Image1(j,:)).*K; end
Construction has form, that we should receive almost the same ratio(ratio energy references channels to main image(in moment of time X)). It will fact and We miss next questions: Why?, How? But sometimes we have peaks. This peaks show moment of time X, when added noise to signal in reference channels only. This noise often added when value pulse power supply higher than average value.
Therefore, Image after normalize has stripes. I found this when I saw picture ratio (mean value of reference channels( XMean_REF_Column(737:end,:)) to X_Mean_main_image_column(1:736,:))
ratio1 = (XMean_REF_Column(737:end,:))./X_Mean_main_image_column(1:736,:)).
I wanted to know form and frequency of noise. I increased values of reference channels in moment X to the maximum value. I received next ratio(graph). (P.S. It was my mistake because, stripes us noise haven`t period. They are random.)
How to remove striped noise from this image. Which filter or algorithm use better?
Thank you for wait. I can`t add more links.
I`m sorry for my English. At the end of my question(problem) is conclusion that, Reference channels ADC(64 channel(Ym)) have electronic noise. This 64 channels is last 64 channels. And noise tolerated from reference channels to channel with image.
I am work in company where their field of work is x-ray. And pictures have test objects. I showed image without test object. And median filter doesn`t work in situation with test object. Processing signal through median filter.
My task is remove noise in digital view. My colleagues says that this way better and shorter than remove electronic noise.
"Was the "After" image made with the method I described?"
1) Yes. I used your code(I paste in Matlab). Octave Drop-in compatible with many Matlab scripts.
%Filter % I have data custom format(20 bit) % #Clip out just the reference section % [XMIN YMIN WIDTH HEIGHT] referencestrip = imcrop(Filter_Image_before, [0 247 size(Filter_Image_before,2) size(Filter_Image_before,1)]); % #Get the average of each column in the reference section meansOfReferenceStrip = mean(referencestrip,1); % #Calculate the offset from the interference % #Using (2^20)/2 because gray scale image values range from 0 to (2^20). offsets = (2^20)/2 - meansOfReferenceStrip; % #Correct the image img1 = Filter_Image_before + offsets; % #Filter image with a median filter % #Comment out this line to remove the filtering. img1 = medfilt2(img1, [20 1]); % for comment OutputData = img1; % #Write corrected image to disk % imwrite(OutputData, "cleaned.png"); % #Show the corrected image on screen figure, imshow (uint8(round(OutputData/2.^12))) %for png 8 bit(20-12=8)
"I don't know anything about X-ray images. Is the "After" an improvement over the "Before?"
2) No, Because we lost image clarity.
Thank your for help!
I am sorry. I haven`t power for long answer. Me answer: I made second normalize without reference channel for first value of scale. To set apart background from main image help small classificatory.