Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带ImageMagick的带通滤波器_Image_Image Processing_Filter_Imagemagick_Fft - Fatal编程技术网

带ImageMagick的带通滤波器

带ImageMagick的带通滤波器,image,image-processing,filter,imagemagick,fft,Image,Image Processing,Filter,Imagemagick,Fft,我已经成功地使用了斐济的FFT带通滤波器,但是我想用ImageMagick在命令行中实现这一点。我看到ImageMagick有,他们的文档包括和,但是我可以执行带通滤波器吗 斐济的带通滤波器设置似乎对我很有效: 很抱歉,我的滤波器和FFT知识。。。真的很糟糕,所以如果我知道要链接什么,这可能很容易实现,等等。类似于链接中显示的低通滤波器的带通滤波器将是方形图像黑色背景上的白环。圆环的内外半径决定了将要通过的频率。在ImageMagick中,您可以按如下方式执行此操作: 输入: 创建环图像: co

我已经成功地使用了斐济的FFT带通滤波器,但是我想用ImageMagick在命令行中实现这一点。我看到ImageMagick有,他们的文档包括和,但是我可以执行带通滤波器吗

斐济的带通滤波器设置似乎对我很有效:


很抱歉,我的滤波器和FFT知识。。。真的很糟糕,所以如果我知道要链接什么,这可能很容易实现,等等。

类似于链接中显示的低通滤波器的带通滤波器将是方形图像黑色背景上的白环。圆环的内外半径决定了将要通过的频率。在ImageMagick中,您可以按如下方式执行此操作:

输入:

创建环图像:

convert lena-1.png -fill black -colorize 100 \
-fill white -draw "translate 64,64 circle 0,0 0,50" \
-fill black -draw "translate 64,64 circle 0,0 0,20" \
-alpha off -blur 0x1 \
ring.png

进行FFT处理,拉伸至全动态范围:

convert lena-1.png -fft  \
\( -clone 0 ring.png -compose multiply -composite \) \
-swap 0 +delete -ift -auto-level \
lena_bp.png  

交替处理,增益为10倍:

convert lena-1.png -fft  \
\( -clone 0 ring.png -compose multiply -composite \) \
-swap 0 +delete -ift -evaluate multiply 10 \
lena_bp.png  

因为我不知道他们在ImageJ或Fiji中编码了什么,并且您没有显示任何输出,所以我只能猜测,可能等效的是内半径和外半径在距离中心3和40像素处。此外,我在动态范围内再次增加了10倍的增益,以使其更加可见:

convert lena-1.png -fill black -colorize 100 \
-fill white -draw "translate 64,64 circle 0,0 0,40" \
-fill black -draw "translate 64,64 circle 0,0 0,3" \
-alpha off -blur 0x1 \
ring.png

请注意,我稍微模糊了光环,以减少光环瑕疵。看见许多低通、高通和带通滤波器具有更强/更长的锥形,类似于增加模糊。有专门设计的锥度,如巴特沃斯。看

我有一个来自ImageMagick的FFT文档的扩展版本,注意一些Jinc滤波有点过时。自从我写这篇文章以来,Imagemagick在-fx中实现了Jinc函数

这里有一小组命令,可以用Unix语法完成这一切。如果不希望创建+write ring.png,请将其删除。此代码仅限于方形图像

ImageMagick 6:

inner=3
outer=40
infile="lena-1.png"
cent=`convert "$infile" -format "%[fx:floor((w-1)/2)]" info:`
inname=`convert "$infile" -format "%t" info:`
suffix=`convert "$infile" -format "%e" info:`
convert "$infile" \
\( +clone -fill black -colorize 100 \
-fill white -draw "translate $cent,$cent circle 0,0 0,$outer" \
-fill black -draw "translate $cent,$cent circle 0,0 0,$inner" \
-alpha off -blur 0x1 +write ring.png \
-write mpr:bpass +delete \) \
-fft  \( -clone 0 mpr:bpass -compose multiply -composite \) \
-swap 0 +delete -ift -evaluate multiply 10 \
${inname}_bandpass_${inner}_${outer}.$suffix
ImageMagick 7只有一个命令行:

inner=3
outer=40
infile="lena-1.png" \
magick "$infile" \
-set option:cent "%[fx:floor((w-1)/2)]" \
-set filename:fn "%t_bandpass_${inner}_${outer}.%e" \
\( +clone -fill black -colorize 100 \
-fill white -draw "translate "%[cent],%[cent]" circle 0,0 0,$outer" \
-fill black -draw "translate "%[cent],%[cent]" circle 0,0 0,$inner" \
-alpha off -blur 0x1 +write ring.png \
-write mpr:bpass +delete \) \
-fft  \( -clone 0 mpr:bpass -compose multiply -composite \) \
-swap 0 +delete -ift -evaluate multiply 10 \
"%[filename:fn]"
如果你的意思是频带增强的频带增强,而不是带通,那么你可以把结果加上原来的合成加合成。在ImageMagick 6中,这将是:

inner=3
outer=40
infile="lena-1.png"
cent=`convert "$infile" -format "%[fx:floor((w-1)/2)]" info:`
inname=`convert "$infile" -format "%t" info:`
suffix=`convert "$infile" -format "%e" info:`
convert "$infile" \
\( +clone -fill black -colorize 100 \
-fill white -draw "translate $cent,$cent circle 0,0 0,$outer" \
-fill black -draw "translate $cent,$cent circle 0,0 0,$inner" \
-alpha off -blur 0x1 +write ring.png \
-write mpr:bpass +delete \) \
-fft  \( -clone 0 mpr:bpass -compose multiply -composite \) \
-swap 0 +delete -ift "$infile" -compose plus -composite \
${inname}_bandenhance_${inner}_${outer}.$suffix

这些结果与我在ImageJ中使用这些设置得到的结果不同。不幸的是,我不知道他们在做什么。ImageJ的结果在我看来更像是低通滤波,而不是我所知道的带增强/带通滤波。看到和


在ImageJ中,可能他们使用的是巴特沃斯滤波器或更大的高斯模糊。或者他们只是在处理HSI、HSV或LAB的强度通道。

对于方形图像,与链接中显示的低通滤波器类似的带通滤波器将是黑色背景上的白环。圆环的内外半径决定了将要通过的频率。在ImageMagick中,您可以按如下方式执行此操作:

输入:

创建环图像:

convert lena-1.png -fill black -colorize 100 \
-fill white -draw "translate 64,64 circle 0,0 0,50" \
-fill black -draw "translate 64,64 circle 0,0 0,20" \
-alpha off -blur 0x1 \
ring.png

进行FFT处理,拉伸至全动态范围:

convert lena-1.png -fft  \
\( -clone 0 ring.png -compose multiply -composite \) \
-swap 0 +delete -ift -auto-level \
lena_bp.png  

交替处理,增益为10倍:

convert lena-1.png -fft  \
\( -clone 0 ring.png -compose multiply -composite \) \
-swap 0 +delete -ift -evaluate multiply 10 \
lena_bp.png  

因为我不知道他们在ImageJ或Fiji中编码了什么,并且您没有显示任何输出,所以我只能猜测,可能等效的是内半径和外半径在距离中心3和40像素处。此外,我在动态范围内再次增加了10倍的增益,以使其更加可见:

convert lena-1.png -fill black -colorize 100 \
-fill white -draw "translate 64,64 circle 0,0 0,40" \
-fill black -draw "translate 64,64 circle 0,0 0,3" \
-alpha off -blur 0x1 \
ring.png

请注意,我稍微模糊了光环,以减少光环瑕疵。看见许多高通滤波器和高通滤波器的模糊度越来越高。有专门设计的锥度,如巴特沃斯。看

我有一个来自ImageMagick的FFT文档的扩展版本,注意一些Jinc滤波有点过时。自从我写这篇文章以来,Imagemagick在-fx中实现了Jinc函数

这里有一小组命令,可以用Unix语法完成这一切。如果不希望创建+write ring.png,请将其删除。此代码仅限于方形图像

ImageMagick 6:

inner=3
outer=40
infile="lena-1.png"
cent=`convert "$infile" -format "%[fx:floor((w-1)/2)]" info:`
inname=`convert "$infile" -format "%t" info:`
suffix=`convert "$infile" -format "%e" info:`
convert "$infile" \
\( +clone -fill black -colorize 100 \
-fill white -draw "translate $cent,$cent circle 0,0 0,$outer" \
-fill black -draw "translate $cent,$cent circle 0,0 0,$inner" \
-alpha off -blur 0x1 +write ring.png \
-write mpr:bpass +delete \) \
-fft  \( -clone 0 mpr:bpass -compose multiply -composite \) \
-swap 0 +delete -ift -evaluate multiply 10 \
${inname}_bandpass_${inner}_${outer}.$suffix
ImageMagick 7只有一个命令行:

inner=3
outer=40
infile="lena-1.png" \
magick "$infile" \
-set option:cent "%[fx:floor((w-1)/2)]" \
-set filename:fn "%t_bandpass_${inner}_${outer}.%e" \
\( +clone -fill black -colorize 100 \
-fill white -draw "translate "%[cent],%[cent]" circle 0,0 0,$outer" \
-fill black -draw "translate "%[cent],%[cent]" circle 0,0 0,$inner" \
-alpha off -blur 0x1 +write ring.png \
-write mpr:bpass +delete \) \
-fft  \( -clone 0 mpr:bpass -compose multiply -composite \) \
-swap 0 +delete -ift -evaluate multiply 10 \
"%[filename:fn]"
如果你的意思是频带增强的频带增强,而不是带通,那么你可以把结果加上原来的合成加合成。在ImageMagick 6中,这将是:

inner=3
outer=40
infile="lena-1.png"
cent=`convert "$infile" -format "%[fx:floor((w-1)/2)]" info:`
inname=`convert "$infile" -format "%t" info:`
suffix=`convert "$infile" -format "%e" info:`
convert "$infile" \
\( +clone -fill black -colorize 100 \
-fill white -draw "translate $cent,$cent circle 0,0 0,$outer" \
-fill black -draw "translate $cent,$cent circle 0,0 0,$inner" \
-alpha off -blur 0x1 +write ring.png \
-write mpr:bpass +delete \) \
-fft  \( -clone 0 mpr:bpass -compose multiply -composite \) \
-swap 0 +delete -ift "$infile" -compose plus -composite \
${inname}_bandenhance_${inner}_${outer}.$suffix

这些结果与我在ImageJ中使用这些设置得到的结果不同。不幸的是,我不知道他们在做什么。ImageJ的结果在我看来更像是低通滤波,而不是我所知道的带增强/带通滤波。看到和


在ImageJ中,可能他们使用的是巴特沃斯滤波器或更大的高斯模糊。或者他们只是在处理HSI、HSV或LAB的强度通道。

我对ImageMagick一无所知,所以会让其他人回答。但是你可以通过链接一个低通和一个高通滤波器来制作一个带通滤波器。@CrisLuengo–我想也许你就是这样做的。你真的可以一个接一个地串联吗?是的:应用带通滤波器下限的高通滤波器,然后在结果上应用带通滤波器上限的低通滤波器
我对ImageMagick一无所知,所以我会让其他人回答。但是你可以通过链接一个低通和一个高通滤波器来制作一个带通滤波器。@CrisLuengo–我想也许你就是这样做的。你真的可以一个接一个地串联吗?是的:应用带通滤波器下限的高通滤波器,然后在结果上应用带通滤波器上限的低通滤波器。这很好,谢谢!我没有包括示例图像,因为我的用例看起来不太像,但本质上我想消除图像中不均匀照明引起的大规模渐变,并保留小规模细节-向我建议了带通,似乎对我的图像效果很好。你的示例非常清楚,但是,对于非正方形图像,这将如何工作?@JeffThompson我认为你必须创建椭圆环,而不是圆形环。椭圆的形状将与图像的尺寸具有相同的纵横比。这太棒了,谢谢!我没有包括示例图像,因为我的用例看起来不太像,但本质上我想消除图像中不均匀照明引起的大规模渐变,并保留小规模细节-向我建议了带通,似乎对我的图像效果很好。你的示例非常清楚,但是,对于非正方形图像,这将如何工作?@JeffThompson我认为你必须创建椭圆环,而不是圆形环。椭圆的形状应与图像的尺寸具有相同的纵横比。