MATLAB Answers

0

Creating Gibbs Ringing by changing tissue intensity

Asked by Luke Dineen-Woolnough on 2 Feb 2016
Latest activity Answered by Image Analyst
on 3 Feb 2016
I'm trying to simulate the MRI Process, part of this requires me to simulate gibbs ringing in an image. I'm trying to increase the intensity of one tissue so it is very high compared with the other, with the hope that when i FFT the image it will produce ringing artifacts. I'm having difficulty trying too extract one range of pixels The image only has 3 intensity values, 46, 70 and 0. I want to increase all pixels with a value of 70 to 255. Can anyone suggest how i do this?

  0 Comments

Sign in to comment.

2 Answers

Answer by David Young
on 3 Feb 2016

I guess you haven't had an answer yet because "Gibbs Ringing" is quite a technical and specialised area. However, the substance of your question has a very simple answer.
If your image array is img, then you can make a new array that is the same apart from having every value exactly equal to 70 changed to 255 like this:
img_new = img;
img_new(img == 70) = 255;
A couple of extra points, if I may.
  • It's a bit surprising that you are asking a very elementary programming question when you are hoping to do something as potentially complex as simulate MRI. You may need to do a crash course on programming in MATLAB if you're going to make progress at all. There are lots of resources - search Answers for how to get started in MATLAB for image processing.
  • Increasing the size of the contrast won't create Gibbs artefacts if they weren't there previously, though it might possibly make them more visible in the result. More important is to think about whether you need any frequency-domain operations to make this phenomenon significant.

  0 Comments

Sign in to comment.


Answer by Image Analyst
on 3 Feb 2016

Maybe try boosting the high frequency content of the original gray scale image by doing a convolution. Make a Laplacian and amplify it and add it to the original, something like
kernel = [-1,-1,-1; -1,17,-1; -1,-1,-1];
outputImage = conv2(grayImage, kernel, 'same');
You can change the weights and kernel window size to achieve different effects. Generally for producing ringing you'll want a positive central weight and negative surrounding weights.

  0 Comments

Sign in to comment.