You can separate the image into its three basic RGB colours. As yellow is the result of combining green and blue, use the green channel, where there is no blue information, and threshold using the Otsu method as the distribution of the modes is surely Gaussian.
if i understood your question right, I believe the following can do with RGB decomposition :
1. edge detection using Canny, Sobel, or Prewitt methods. command edge(Image, ‘Canny’)
2. use high pass filter
3. low pass filter with thresholding. I prefer to be local window thresholding
4. wavelet transform (LH, HH ) part for low to sharp edges (wavlet)
5. DCT2 with thresholding to extract high frequency part then IDCT2. May be a histogram could help you to define the threshold.
Then if you are interested in the real values of the pixels just substitute the active pixels with real ones. You might need extra process to get each method the way you want to present it to the following step in the process. It depends what you want to do next.
The nested loop is to obtain the coordinates (grid points) of the blue points and not just to create a black and white image. The code given in my answer does both. The image is just to check the validate the action of the algorithm. The imbinarize function wont be of any use in determining the coordinates and just creates a black and white image . I suppose
I did not ask to remember every built-in function. All what I am saying is that there is a short-cut to your solution which simplifies the code. It is up to you to take it or leave it.