/// <summary> /// Computes minimum values for each pixel from this <see cref="Image"/> and the specified <see cref="Image"/>. /// </summary> /// <param name="dst">The destination <see cref="Image"/>. Can be <b>null</b>.</param> /// <param name="src">The right-side operand of this operation.</param> /// <returns> /// The destination <see cref="Image"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="src"/> is <b>null</b>. /// </exception> /// <exception cref="ArgumentException"> /// <para>The depth of <paramref name="src"/> is not the same as the depth of this <see cref="Image"/>.</para> /// </exception> /// <remarks> /// <para> /// <paramref name="src"/> and this <see cref="Image"/> do not have to have the same width and height. /// If image sizes are different, the operation is performed in this <see cref="Image"/> upper-left corner. /// </para> /// <para>If <paramref name="dst"/> is <b>null</b> the method creates new destination <see cref="Image"/> with dimensions of this <see cref="Image"/>.</para> /// <para>If <paramref name="dst"/> equals this <see cref="Image"/>, the operation is performed in-place.</para> /// <para>Conversely, the <paramref name="dst"/> is reallocated to the dimensions of this <see cref="Image"/>.</para> /// </remarks> public Image MinEvery(Image dst, Image src) { if (src == null) { throw new ArgumentNullException(nameof(src)); } // copy this image to destination dst = this.Copy(dst, true); dst.MinEvery( 0, 0, Math.Min(this.Width, src.Width), Math.Min(this.Height, src.Height), src, 0, 0); return(dst); }